Merge tag 'v5.3-rc8' into rdma.git for-next
To resolve dependencies in following patches mlx5_ib.h conflict resolved by keeing both hunks Linux 5.3-rc8 Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
@@ -1970,6 +1970,7 @@ call_bind(struct rpc_task *task)
|
||||
static void
|
||||
call_bind_status(struct rpc_task *task)
|
||||
{
|
||||
struct rpc_xprt *xprt = task->tk_rqstp->rq_xprt;
|
||||
int status = -EIO;
|
||||
|
||||
if (rpc_task_transmitted(task)) {
|
||||
@@ -1977,14 +1978,15 @@ call_bind_status(struct rpc_task *task)
|
||||
return;
|
||||
}
|
||||
|
||||
if (task->tk_status >= 0) {
|
||||
dprint_status(task);
|
||||
dprint_status(task);
|
||||
trace_rpc_bind_status(task);
|
||||
if (task->tk_status >= 0)
|
||||
goto out_next;
|
||||
if (xprt_bound(xprt)) {
|
||||
task->tk_status = 0;
|
||||
task->tk_action = call_connect;
|
||||
return;
|
||||
goto out_next;
|
||||
}
|
||||
|
||||
trace_rpc_bind_status(task);
|
||||
switch (task->tk_status) {
|
||||
case -ENOMEM:
|
||||
dprintk("RPC: %5u rpcbind out of memory\n", task->tk_pid);
|
||||
@@ -2003,6 +2005,9 @@ call_bind_status(struct rpc_task *task)
|
||||
task->tk_rebind_retry--;
|
||||
rpc_delay(task, 3*HZ);
|
||||
goto retry_timeout;
|
||||
case -ENOBUFS:
|
||||
rpc_delay(task, HZ >> 2);
|
||||
goto retry_timeout;
|
||||
case -EAGAIN:
|
||||
goto retry_timeout;
|
||||
case -ETIMEDOUT:
|
||||
@@ -2026,7 +2031,6 @@ call_bind_status(struct rpc_task *task)
|
||||
case -ENETDOWN:
|
||||
case -EHOSTUNREACH:
|
||||
case -ENETUNREACH:
|
||||
case -ENOBUFS:
|
||||
case -EPIPE:
|
||||
dprintk("RPC: %5u remote rpcbind unreachable: %d\n",
|
||||
task->tk_pid, task->tk_status);
|
||||
@@ -2043,7 +2047,9 @@ call_bind_status(struct rpc_task *task)
|
||||
|
||||
rpc_call_rpcerror(task, status);
|
||||
return;
|
||||
|
||||
out_next:
|
||||
task->tk_action = call_connect;
|
||||
return;
|
||||
retry_timeout:
|
||||
task->tk_status = 0;
|
||||
task->tk_action = call_bind;
|
||||
@@ -2090,6 +2096,7 @@ call_connect(struct rpc_task *task)
|
||||
static void
|
||||
call_connect_status(struct rpc_task *task)
|
||||
{
|
||||
struct rpc_xprt *xprt = task->tk_rqstp->rq_xprt;
|
||||
struct rpc_clnt *clnt = task->tk_client;
|
||||
int status = task->tk_status;
|
||||
|
||||
@@ -2099,8 +2106,17 @@ call_connect_status(struct rpc_task *task)
|
||||
}
|
||||
|
||||
dprint_status(task);
|
||||
|
||||
trace_rpc_connect_status(task);
|
||||
|
||||
if (task->tk_status == 0) {
|
||||
clnt->cl_stats->netreconn++;
|
||||
goto out_next;
|
||||
}
|
||||
if (xprt_connected(xprt)) {
|
||||
task->tk_status = 0;
|
||||
goto out_next;
|
||||
}
|
||||
|
||||
task->tk_status = 0;
|
||||
switch (status) {
|
||||
case -ECONNREFUSED:
|
||||
@@ -2117,8 +2133,6 @@ call_connect_status(struct rpc_task *task)
|
||||
case -ENETDOWN:
|
||||
case -ENETUNREACH:
|
||||
case -EHOSTUNREACH:
|
||||
case -EADDRINUSE:
|
||||
case -ENOBUFS:
|
||||
case -EPIPE:
|
||||
xprt_conditional_disconnect(task->tk_rqstp->rq_xprt,
|
||||
task->tk_rqstp->rq_connect_cookie);
|
||||
@@ -2127,17 +2141,20 @@ call_connect_status(struct rpc_task *task)
|
||||
/* retry with existing socket, after a delay */
|
||||
rpc_delay(task, 3*HZ);
|
||||
/* fall through */
|
||||
case -EADDRINUSE:
|
||||
case -ENOTCONN:
|
||||
case -EAGAIN:
|
||||
case -ETIMEDOUT:
|
||||
goto out_retry;
|
||||
case 0:
|
||||
clnt->cl_stats->netreconn++;
|
||||
task->tk_action = call_transmit;
|
||||
return;
|
||||
case -ENOBUFS:
|
||||
rpc_delay(task, HZ >> 2);
|
||||
goto out_retry;
|
||||
}
|
||||
rpc_call_rpcerror(task, status);
|
||||
return;
|
||||
out_next:
|
||||
task->tk_action = call_transmit;
|
||||
return;
|
||||
out_retry:
|
||||
/* Check for timeouts before looping back to call_bind */
|
||||
task->tk_action = call_bind;
|
||||
@@ -2365,7 +2382,7 @@ call_status(struct rpc_task *task)
|
||||
case -ECONNABORTED:
|
||||
case -ENOTCONN:
|
||||
rpc_force_rebind(clnt);
|
||||
/* fall through */
|
||||
break;
|
||||
case -EADDRINUSE:
|
||||
rpc_delay(task, 3*HZ);
|
||||
/* fall through */
|
||||
|
@@ -1408,13 +1408,6 @@ xprt_request_transmit(struct rpc_rqst *req, struct rpc_task *snd_task)
|
||||
status = -EBADMSG;
|
||||
goto out_dequeue;
|
||||
}
|
||||
if (task->tk_ops->rpc_call_prepare_transmit) {
|
||||
task->tk_ops->rpc_call_prepare_transmit(task,
|
||||
task->tk_calldata);
|
||||
status = task->tk_status;
|
||||
if (status < 0)
|
||||
goto out_dequeue;
|
||||
}
|
||||
if (RPC_SIGNALLED(task)) {
|
||||
status = -ERESTARTSYS;
|
||||
goto out_dequeue;
|
||||
|
Fai riferimento in un nuovo problema
Block a user