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:
Родитель
3601c4a91e
Коммит
2fc193cf92
|
@ -1814,6 +1814,7 @@ call_connect_status(struct rpc_task *task)
|
|||
case -ENETUNREACH:
|
||||
case -EHOSTUNREACH:
|
||||
case -ENOBUFS:
|
||||
case -EPIPE:
|
||||
if (RPC_IS_SOFTCONN(task))
|
||||
break;
|
||||
/* retry with existing socket, after a delay */
|
||||
|
|
|
@ -744,6 +744,7 @@ static void xprt_connect_status(struct rpc_task *task)
|
|||
case -ECONNABORTED:
|
||||
case -ENETUNREACH:
|
||||
case -EHOSTUNREACH:
|
||||
case -EPIPE:
|
||||
case -EAGAIN:
|
||||
dprintk("RPC: %5u xprt_connect_status: retrying\n", task->tk_pid);
|
||||
break;
|
||||
|
|
Загрузка…
Ссылка в новой задаче