xprtrdma: Combine rpcrdma_mr_put and rpcrdma_mr_unmap_and_put
Clean up. There is only one remaining rpcrdma_mr_put call site, and it can be directly replaced with unmap_and_put because mr->mr_dir is set to DMA_NONE just before the call. Now all the call sites do a DMA unmap, and we can just rename mr_unmap_and_put to mr_put, which nicely matches mr_get. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
265a38d461
commit
1ca3f4c054
|
@ -129,7 +129,7 @@ void frwr_reset(struct rpcrdma_req *req)
|
|||
struct rpcrdma_mr *mr;
|
||||
|
||||
while ((mr = rpcrdma_mr_pop(&req->rl_registered)))
|
||||
rpcrdma_mr_unmap_and_put(mr);
|
||||
rpcrdma_mr_put(mr);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -453,7 +453,7 @@ void frwr_reminv(struct rpcrdma_rep *rep, struct list_head *mrs)
|
|||
if (mr->mr_handle == rep->rr_inv_rkey) {
|
||||
list_del_init(&mr->mr_list);
|
||||
trace_xprtrdma_mr_remoteinv(mr);
|
||||
rpcrdma_mr_unmap_and_put(mr);
|
||||
rpcrdma_mr_put(mr);
|
||||
break; /* only one invalidated MR per RPC */
|
||||
}
|
||||
}
|
||||
|
@ -463,7 +463,7 @@ static void __frwr_release_mr(struct ib_wc *wc, struct rpcrdma_mr *mr)
|
|||
if (wc->status != IB_WC_SUCCESS)
|
||||
rpcrdma_mr_recycle(mr);
|
||||
else
|
||||
rpcrdma_mr_unmap_and_put(mr);
|
||||
rpcrdma_mr_put(mr);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1233,34 +1233,15 @@ out_nomrs:
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
__rpcrdma_mr_put(struct rpcrdma_buffer *buf, struct rpcrdma_mr *mr)
|
||||
{
|
||||
spin_lock(&buf->rb_mrlock);
|
||||
rpcrdma_mr_push(mr, &buf->rb_mrs);
|
||||
spin_unlock(&buf->rb_mrlock);
|
||||
}
|
||||
|
||||
/**
|
||||
* rpcrdma_mr_put - Release an rpcrdma_mr object
|
||||
* @mr: object to release
|
||||
* rpcrdma_mr_put - DMA unmap an MR and release it
|
||||
* @mr: MR to release
|
||||
*
|
||||
*/
|
||||
void
|
||||
rpcrdma_mr_put(struct rpcrdma_mr *mr)
|
||||
{
|
||||
__rpcrdma_mr_put(&mr->mr_xprt->rx_buf, mr);
|
||||
}
|
||||
|
||||
/**
|
||||
* rpcrdma_mr_unmap_and_put - DMA unmap an MR and release it
|
||||
* @mr: object to release
|
||||
*
|
||||
*/
|
||||
void
|
||||
rpcrdma_mr_unmap_and_put(struct rpcrdma_mr *mr)
|
||||
void rpcrdma_mr_put(struct rpcrdma_mr *mr)
|
||||
{
|
||||
struct rpcrdma_xprt *r_xprt = mr->mr_xprt;
|
||||
struct rpcrdma_buffer *buf = &r_xprt->rx_buf;
|
||||
|
||||
if (mr->mr_dir != DMA_NONE) {
|
||||
trace_xprtrdma_mr_unmap(mr);
|
||||
|
@ -1268,7 +1249,10 @@ rpcrdma_mr_unmap_and_put(struct rpcrdma_mr *mr)
|
|||
mr->mr_sg, mr->mr_nents, mr->mr_dir);
|
||||
mr->mr_dir = DMA_NONE;
|
||||
}
|
||||
__rpcrdma_mr_put(&r_xprt->rx_buf, mr);
|
||||
|
||||
spin_lock(&buf->rb_mrlock);
|
||||
rpcrdma_mr_push(mr, &buf->rb_mrs);
|
||||
spin_unlock(&buf->rb_mrlock);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -485,7 +485,6 @@ struct rpcrdma_sendctx *rpcrdma_sendctx_get_locked(struct rpcrdma_xprt *r_xprt);
|
|||
|
||||
struct rpcrdma_mr *rpcrdma_mr_get(struct rpcrdma_xprt *r_xprt);
|
||||
void rpcrdma_mr_put(struct rpcrdma_mr *mr);
|
||||
void rpcrdma_mr_unmap_and_put(struct rpcrdma_mr *mr);
|
||||
|
||||
static inline void
|
||||
rpcrdma_mr_recycle(struct rpcrdma_mr *mr)
|
||||
|
|
Loading…
Reference in New Issue