SUNRPC: Handle connect errors ECONNABORTED and EHOSTUNREACH
Ensure that call_bind_status, call_connect_status, call_transmit_status and call_status all are capable of handling ECONNABORTED and EHOSTUNREACH. Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
This commit is contained in:
parent
0fe8d04e8c
commit
df2772700c
|
@ -1729,6 +1729,7 @@ call_bind_status(struct rpc_task *task)
|
||||||
return;
|
return;
|
||||||
case -ECONNREFUSED: /* connection problems */
|
case -ECONNREFUSED: /* connection problems */
|
||||||
case -ECONNRESET:
|
case -ECONNRESET:
|
||||||
|
case -ECONNABORTED:
|
||||||
case -ENOTCONN:
|
case -ENOTCONN:
|
||||||
case -EHOSTDOWN:
|
case -EHOSTDOWN:
|
||||||
case -EHOSTUNREACH:
|
case -EHOSTUNREACH:
|
||||||
|
@ -1799,7 +1800,9 @@ call_connect_status(struct rpc_task *task)
|
||||||
return;
|
return;
|
||||||
case -ECONNREFUSED:
|
case -ECONNREFUSED:
|
||||||
case -ECONNRESET:
|
case -ECONNRESET:
|
||||||
|
case -ECONNABORTED:
|
||||||
case -ENETUNREACH:
|
case -ENETUNREACH:
|
||||||
|
case -EHOSTUNREACH:
|
||||||
/* retry with existing socket, after a delay */
|
/* retry with existing socket, after a delay */
|
||||||
rpc_delay(task, 3*HZ);
|
rpc_delay(task, 3*HZ);
|
||||||
if (RPC_IS_SOFTCONN(task))
|
if (RPC_IS_SOFTCONN(task))
|
||||||
|
@ -1902,6 +1905,7 @@ call_transmit_status(struct rpc_task *task)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case -ECONNRESET:
|
case -ECONNRESET:
|
||||||
|
case -ECONNABORTED:
|
||||||
case -ENOTCONN:
|
case -ENOTCONN:
|
||||||
case -EPIPE:
|
case -EPIPE:
|
||||||
rpc_task_force_reencode(task);
|
rpc_task_force_reencode(task);
|
||||||
|
@ -2011,8 +2015,9 @@ call_status(struct rpc_task *task)
|
||||||
xprt_conditional_disconnect(req->rq_xprt,
|
xprt_conditional_disconnect(req->rq_xprt,
|
||||||
req->rq_connect_cookie);
|
req->rq_connect_cookie);
|
||||||
break;
|
break;
|
||||||
case -ECONNRESET:
|
|
||||||
case -ECONNREFUSED:
|
case -ECONNREFUSED:
|
||||||
|
case -ECONNRESET:
|
||||||
|
case -ECONNABORTED:
|
||||||
rpc_force_rebind(clnt);
|
rpc_force_rebind(clnt);
|
||||||
rpc_delay(task, 3*HZ);
|
rpc_delay(task, 3*HZ);
|
||||||
case -EPIPE:
|
case -EPIPE:
|
||||||
|
|
Loading…
Reference in a new issue