diff options
Diffstat (limited to 'net/sunrpc/xprtrdma/svc_rdma_transport.c')
-rw-r--r-- | net/sunrpc/xprtrdma/svc_rdma_transport.c | 5 |
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 | ||
108 | static void svc_rdma_unmap_dma(struct svc_rdma_op_ctxt *ctxt) | 108 | void 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, |