summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2014-07-29 23:24:19 +0200
committerAnna Schumaker <Anna.Schumaker@Netapp.com>2014-07-31 22:22:54 +0200
commitc93e986a295d537589efd0504f36ca952bd1a5be (patch)
treef36cea28c43152182d785b5e4968d3786a3e5afb /net
parentxprtrdma: Unclutter struct rpcrdma_mr_seg (diff)
downloadlinux-c93e986a295d537589efd0504f36ca952bd1a5be.tar.xz
linux-c93e986a295d537589efd0504f36ca952bd1a5be.zip
xprtrdma: Back off rkey when FAST_REG_MR fails
If posting a FAST_REG_MR Work Reqeust fails, revert the rkey update to avoid subsequent IB_WC_MW_BIND_ERR completions. Suggested-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Diffstat (limited to 'net')
-rw-r--r--net/sunrpc/xprtrdma/verbs.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c
index dd1dabcd3a07..b670f4d92840 100644
--- a/net/sunrpc/xprtrdma/verbs.c
+++ b/net/sunrpc/xprtrdma/verbs.c
@@ -1577,6 +1577,7 @@ rpcrdma_register_frmr_external(struct rpcrdma_mr_seg *seg,
if (rc) {
dprintk("RPC: %s: failed ib_post_send for register,"
" status %i\n", __func__, rc);
+ ib_update_fast_reg_key(mr, --key);
goto out_err;
} else {
seg1->mr_rkey = mr->rkey;