Commit 4a6862b3 authored by Tom Tucker's avatar Tom Tucker Committed by Trond Myklebust

xprtrdma: The transport should not bug-check when a dup reply is received

The client side RDMA transport will bug check if it receives a duplicate
reply, instead we should simply drop the duplicate reply.
Signed-off-by: default avatarTom Tucker <tom@ogc.us>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 18d98f6c
...@@ -771,13 +771,18 @@ rpcrdma_reply_handler(struct rpcrdma_rep *rep) ...@@ -771,13 +771,18 @@ rpcrdma_reply_handler(struct rpcrdma_rep *rep)
/* get request object */ /* get request object */
req = rpcr_to_rdmar(rqst); req = rpcr_to_rdmar(rqst);
if (req->rl_reply) {
spin_unlock(&xprt->transport_lock);
dprintk("RPC: %s: duplicate reply 0x%p to RPC "
"request 0x%p: xid 0x%08x\n", __func__, rep, req,
headerp->rm_xid);
goto repost;
}
dprintk("RPC: %s: reply 0x%p completes request 0x%p\n" dprintk("RPC: %s: reply 0x%p completes request 0x%p\n"
" RPC request 0x%p xid 0x%08x\n", " RPC request 0x%p xid 0x%08x\n",
__func__, rep, req, rqst, headerp->rm_xid); __func__, rep, req, rqst, headerp->rm_xid);
BUG_ON(!req || req->rl_reply);
/* from here on, the reply is no longer an orphan */ /* from here on, the reply is no longer an orphan */
req->rl_reply = rep; req->rl_reply = rep;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment