aboutsummaryrefslogtreecommitdiffstats
path: root/net/sunrpc/xprtrdma/svc_rdma_transport.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sunrpc/xprtrdma/svc_rdma_transport.c')
-rw-r--r--net/sunrpc/xprtrdma/svc_rdma_transport.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
index f22f5876766..fb0dff5e53e 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
@@ -105,7 +105,7 @@ struct svc_rdma_op_ctxt *svc_rdma_get_context(struct svcxprt_rdma *xprt)
105 return ctxt; 105 return ctxt;
106} 106}
107 107
108static void svc_rdma_unmap_dma(struct svc_rdma_op_ctxt *ctxt) 108void svc_rdma_unmap_dma(struct svc_rdma_op_ctxt *ctxt)
109{ 109{
110 struct svcxprt_rdma *xprt = ctxt->xprt; 110 struct svcxprt_rdma *xprt = ctxt->xprt;
111 int i; 111 int i;
@@ -343,9 +343,12 @@ static void process_context(struct svcxprt_rdma *xprt,
343 break; 343 break;
344 344
345 case IB_WR_RDMA_READ: 345 case IB_WR_RDMA_READ:
346 case IB_WR_RDMA_READ_WITH_INV:
346 if (test_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags)) { 347 if (test_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags)) {
347 struct svc_rdma_op_ctxt *read_hdr = ctxt->read_hdr; 348 struct svc_rdma_op_ctxt *read_hdr = ctxt->read_hdr;
348 BUG_ON(!read_hdr); 349 BUG_ON(!read_hdr);
350 if (test_bit(RDMACTXT_F_FAST_UNREG, &ctxt->flags))
351 svc_rdma_put_frmr(xprt, ctxt->frmr);
349 spin_lock_bh(&xprt->sc_rq_dto_lock); 352 spin_lock_bh(&xprt->sc_rq_dto_lock);
350 set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags); 353 set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags);
351 list_add_tail(&read_hdr->dto_q, 354 list_add_tail(&read_hdr->dto_q,