]> git.baikalelectronics.ru Git - kernel.git/commit
xprtrdma: Disconnect on registration failure
authorChuck Lever <chuck.lever@oracle.com>
Wed, 28 May 2014 14:35:14 +0000 (10:35 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Wed, 4 Jun 2014 12:56:53 +0000 (08:56 -0400)
commit66dec6cf0e17c4534e1c746c06cd86fb709d4f61
treefa9b5c277f6fad09e1157cba579816c760c985ae
parenta9c8f1e3a57a5af3b52fe697eabb2a39132e97a3
xprtrdma: Disconnect on registration failure

If rpcrdma_register_external() fails during request marshaling, the
current RPC request is killed. Instead, this RPC should be retried
after reconnecting the transport instance.

The most likely reason for registration failure with FRMR is a
failed post_send, which would be due to a remote transport
disconnect or memory exhaustion. These issues can be recovered
by a retry.

Problems encountered in the marshaling logic itself will not be
corrected by trying again, so these should still kill a request.

Now that we've added a clean exit for marshaling errors, take the
opportunity to defang some BUG_ON's.

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