svcrdma: Clean-up svc_rdma_unmap_dma
authorChuck Lever <chuck.lever@oracle.com>
Fri, 23 Jun 2017 21:19:05 +0000 (17:19 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Wed, 12 Jul 2017 19:54:58 +0000 (15:54 -0400)
There's no longer a need to compare each SGE's lkey with the PD's
local_dma_lkey. Now that FRWR is gone, all DMA mappings are for
pages that were registered with this key.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
net/sunrpc/xprtrdma/svc_rdma_transport.c

index 8864105..75bd11f 100644 (file)
@@ -225,22 +225,13 @@ void svc_rdma_unmap_dma(struct svc_rdma_op_ctxt *ctxt)
 {
        struct svcxprt_rdma *xprt = ctxt->xprt;
        struct ib_device *device = xprt->sc_cm_id->device;
-       u32 lkey = xprt->sc_pd->local_dma_lkey;
        unsigned int i;
 
-       for (i = 0; i < ctxt->mapped_sges; i++) {
-               /*
-                * Unmap the DMA addr in the SGE if the lkey matches
-                * the local_dma_lkey, otherwise, ignore it since it is
-                * an FRMR lkey and will be unmapped later when the
-                * last WR that uses it completes.
-                */
-               if (ctxt->sge[i].lkey == lkey)
-                       ib_dma_unmap_page(device,
-                                           ctxt->sge[i].addr,
-                                           ctxt->sge[i].length,
-                                           ctxt->direction);
-       }
+       for (i = 0; i < ctxt->mapped_sges; i++)
+               ib_dma_unmap_page(device,
+                                 ctxt->sge[i].addr,
+                                 ctxt->sge[i].length,
+                                 ctxt->direction);
        ctxt->mapped_sges = 0;
 }