Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5fe46e9d authored by Bian Naimeng's avatar Bian Naimeng Committed by Trond Myklebust
Browse files

rpc client can not deal with ENOSOCK, so translate it into ENOCONN



If NFSv4 client send a request before connect, or the old connection was broken
because a ETIMEOUT error catched by call_status, ->send_request will return
ENOSOCK, but rpc layer can not deal with it, so make sure ->send_request can
translate ENOSOCK into ENOCONN.

Signed-off-by: default avatarBian Naimeng <biannm@cn.fujitsu.com>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 25cf84cf
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -549,8 +549,6 @@ static int xs_udp_send_request(struct rpc_task *task)
		/* Still some bytes left; set up for a retry later. */
		status = -EAGAIN;
	}
	if (!transport->sock)
		goto out;

	switch (status) {
	case -ENOTSOCK:
@@ -570,7 +568,7 @@ static int xs_udp_send_request(struct rpc_task *task)
		 * prompts ECONNREFUSED. */
		clear_bit(SOCK_ASYNC_NOSPACE, &transport->sock->flags);
	}
out:

	return status;
}

@@ -652,8 +650,6 @@ static int xs_tcp_send_request(struct rpc_task *task)
		status = -EAGAIN;
		break;
	}
	if (!transport->sock)
		goto out;

	switch (status) {
	case -ENOTSOCK:
@@ -673,7 +669,7 @@ static int xs_tcp_send_request(struct rpc_task *task)
	case -ENOTCONN:
		clear_bit(SOCK_ASYNC_NOSPACE, &transport->sock->flags);
	}
out:

	return status;
}