2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-14 00:04:00 +08:00

SUNRPC: Handle EPIPE in xprt_connect_status

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: Weston Andros Adamson <dros@primarydata.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
This commit is contained in:
Trond Myklebust 2014-07-03 00:02:57 -04:00
parent 3601c4a91e
commit 2fc193cf92
2 changed files with 2 additions and 0 deletions

View File

@ -1814,6 +1814,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 */

View File

@ -744,6 +744,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;