xprtrdma: Add ro_unmap_sync method for FMR
authorChuck Lever <chuck.lever@oracle.com>
Wed, 16 Dec 2015 22:22:55 +0000 (17:22 -0500)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Fri, 18 Dec 2015 20:34:33 +0000 (15:34 -0500)
commit7c7a5390dc6c8d89fc368424b69a4eef8e43f411
tree4e45049e1737d1fc5fec1b9aca813eb92fcc0ca9
parentc9918ff56dfb175ce427140c641280d0b4522dbe
xprtrdma: Add ro_unmap_sync method for FMR

FMR's ro_unmap method is already synchronous because ib_unmap_fmr()
is a synchronous verb. However, some improvements can be made here.

1. Gather all the MRs for the RPC request onto a list, and invoke
   ib_unmap_fmr() once with that list. This reduces the number of
   doorbells when there is more than one MR to invalidate

2. Perform the DMA unmap _after_ the MRs are unmapped, not before.
   This is critical after invalidating a Write chunk.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Tested-by: Devesh Sharma <devesh.sharma@avagotech.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
net/sunrpc/xprtrdma/fmr_ops.c