xprtrdma: unmap all FMRs during transport disconnect
authorChuck Lever <chuck.lever@oracle.com>
Sun, 9 Nov 2014 01:14:29 +0000 (20:14 -0500)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Tue, 25 Nov 2014 18:39:20 +0000 (13:39 -0500)
commit467c9674bccc073684ee34f4bd205cf1b135d76e
treecefc907944bb2dcbefec1a7fbf7a4a2df1e775da
parente7104a2a96069975d489c60a30564372c6273a85
xprtrdma: unmap all FMRs during transport disconnect

When using RPCRDMA_MTHCAFMR memory registration, after a few
transport disconnect / reconnect cycles, ib_map_phys_fmr() starts to
return EINVAL because the provider has exhausted its map pool.

Make sure that all FMRs are unmapped during transport disconnect,
and that ->send_request remarshals them during an RPC retransmit.
This resets the transport's MRs to ensure that none are leaked
during a disconnect.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
net/sunrpc/xprtrdma/transport.c
net/sunrpc/xprtrdma/verbs.c