xprtrdma: Ensure MRs are DMA-unmapped when posting LOCAL_INV fails
authorChuck Lever <chuck.lever@oracle.com>
Wed, 19 Dec 2018 15:58:19 +0000 (10:58 -0500)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Wed, 2 Jan 2019 17:05:16 +0000 (12:05 -0500)
The recovery case in frwr_op_unmap_sync needs to DMA unmap each MR.
frwr_release_mr does not DMA-unmap, but the recycle worker does.

Fixes: 61da886bf74e ("xprtrdma: Explicitly resetting MRs is ... ")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
net/sunrpc/xprtrdma/frwr_ops.c

index 20ced24..27222c0 100644 (file)
@@ -563,8 +563,8 @@ out_release:
                mr = container_of(frwr, struct rpcrdma_mr, frwr);
                bad_wr = bad_wr->next;
 
-               list_del(&mr->mr_list);
-               frwr_op_release_mr(mr);
+               list_del_init(&mr->mr_list);
+               rpcrdma_mr_recycle(mr);
        }
 }