Commit 0deb7f8c authored by Trond Myklebust's avatar Trond Myklebust Committed by Jiri Slaby

SUNRPC: Handle EPIPE in xprt_connect_status

commit 2fc193cf upstream.

The callback handler xs_error_report() can end up propagating an EPIPE
error by means of the call to xprt_wake_pending_tasks(). Ensure that
xprt_connect_status() does not automatically convert this into an
EIO error.
Reported-by: default avatarWeston Andros Adamson <dros@primarydata.com>
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
Acked-by: default avatarNeilBrown <neilb@suse.de>
Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
parent 27219fc0
...@@ -1709,6 +1709,7 @@ call_connect_status(struct rpc_task *task) ...@@ -1709,6 +1709,7 @@ call_connect_status(struct rpc_task *task)
case -ENETUNREACH: case -ENETUNREACH:
case -EHOSTUNREACH: case -EHOSTUNREACH:
case -ENOBUFS: case -ENOBUFS:
case -EPIPE:
if (RPC_IS_SOFTCONN(task)) if (RPC_IS_SOFTCONN(task))
break; break;
/* retry with existing socket, after a delay */ /* retry with existing socket, after a delay */
......
...@@ -750,6 +750,7 @@ static void xprt_connect_status(struct rpc_task *task) ...@@ -750,6 +750,7 @@ static void xprt_connect_status(struct rpc_task *task)
case -ECONNABORTED: case -ECONNABORTED:
case -ENETUNREACH: case -ENETUNREACH:
case -EHOSTUNREACH: case -EHOSTUNREACH:
case -EPIPE:
case -EAGAIN: case -EAGAIN:
dprintk("RPC: %5u xprt_connect_status: retrying\n", task->tk_pid); dprintk("RPC: %5u xprt_connect_status: retrying\n", task->tk_pid);
break; break;
......
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