Commit df277270 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

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: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
parent 0fe8d04e
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -1729,6 +1729,7 @@ call_bind_status(struct rpc_task *task)
		return;
	case -ECONNREFUSED:		/* connection problems */
	case -ECONNRESET:
	case -ECONNABORTED:
	case -ENOTCONN:
	case -EHOSTDOWN:
	case -EHOSTUNREACH:
@@ -1799,7 +1800,9 @@ call_connect_status(struct rpc_task *task)
		return;
	case -ECONNREFUSED:
	case -ECONNRESET:
	case -ECONNABORTED:
	case -ENETUNREACH:
	case -EHOSTUNREACH:
		/* retry with existing socket, after a delay */
		rpc_delay(task, 3*HZ);
		if (RPC_IS_SOFTCONN(task))
@@ -1902,6 +1905,7 @@ call_transmit_status(struct rpc_task *task)
			break;
		}
	case -ECONNRESET:
	case -ECONNABORTED:
	case -ENOTCONN:
	case -EPIPE:
		rpc_task_force_reencode(task);
@@ -2011,8 +2015,9 @@ call_status(struct rpc_task *task)
			xprt_conditional_disconnect(req->rq_xprt,
					req->rq_connect_cookie);
		break;
	case -ECONNRESET:
	case -ECONNREFUSED:
	case -ECONNRESET:
	case -ECONNABORTED:
		rpc_force_rebind(clnt);
		rpc_delay(task, 3*HZ);
	case -EPIPE: