Commit cea57789 authored by Trond Myklebust's avatar Trond Myklebust

SUNRPC: Clean up

Replace remaining callers of call_timeout() with rpc_check_timeout().
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent 7b3fef8e
...@@ -70,7 +70,6 @@ static void call_status(struct rpc_task *task); ...@@ -70,7 +70,6 @@ static void call_status(struct rpc_task *task);
static void call_transmit_status(struct rpc_task *task); static void call_transmit_status(struct rpc_task *task);
static void call_refresh(struct rpc_task *task); static void call_refresh(struct rpc_task *task);
static void call_refreshresult(struct rpc_task *task); static void call_refreshresult(struct rpc_task *task);
static void call_timeout(struct rpc_task *task);
static void call_connect(struct rpc_task *task); static void call_connect(struct rpc_task *task);
static void call_connect_status(struct rpc_task *task); static void call_connect_status(struct rpc_task *task);
...@@ -1908,7 +1907,8 @@ call_bind_status(struct rpc_task *task) ...@@ -1908,7 +1907,8 @@ call_bind_status(struct rpc_task *task)
retry_timeout: retry_timeout:
task->tk_status = 0; task->tk_status = 0;
task->tk_action = call_timeout; task->tk_action = call_encode;
rpc_check_timeout(task);
} }
/* /*
...@@ -2197,10 +2197,8 @@ call_status(struct rpc_task *task) ...@@ -2197,10 +2197,8 @@ call_status(struct rpc_task *task)
case -EHOSTUNREACH: case -EHOSTUNREACH:
case -ENETUNREACH: case -ENETUNREACH:
case -EPERM: case -EPERM:
if (RPC_IS_SOFTCONN(task)) { if (RPC_IS_SOFTCONN(task))
rpc_exit(task, status); goto out_exit;
break;
}
/* /*
* Delay any retries for 3 seconds, then handle as if it * Delay any retries for 3 seconds, then handle as if it
* were a timeout. * were a timeout.
...@@ -2208,7 +2206,6 @@ call_status(struct rpc_task *task) ...@@ -2208,7 +2206,6 @@ call_status(struct rpc_task *task)
rpc_delay(task, 3*HZ); rpc_delay(task, 3*HZ);
/* fall through */ /* fall through */
case -ETIMEDOUT: case -ETIMEDOUT:
task->tk_action = call_timeout;
break; break;
case -ECONNREFUSED: case -ECONNREFUSED:
case -ECONNRESET: case -ECONNRESET:
...@@ -2221,18 +2218,21 @@ call_status(struct rpc_task *task) ...@@ -2221,18 +2218,21 @@ call_status(struct rpc_task *task)
case -EPIPE: case -EPIPE:
case -ENOTCONN: case -ENOTCONN:
case -EAGAIN: case -EAGAIN:
task->tk_action = call_timeout;
break; break;
case -EIO: case -EIO:
/* shutdown or soft timeout */ /* shutdown or soft timeout */
rpc_exit(task, status); goto out_exit;
break;
default: default:
if (clnt->cl_chatty) if (clnt->cl_chatty)
printk("%s: RPC call returned error %d\n", printk("%s: RPC call returned error %d\n",
clnt->cl_program->name, -status); clnt->cl_program->name, -status);
rpc_exit(task, status); goto out_exit;
} }
task->tk_action = call_encode;
rpc_check_timeout(task);
return;
out_exit:
rpc_exit(task, status);
} }
static void static void
...@@ -2279,19 +2279,6 @@ rpc_check_timeout(struct rpc_task *task) ...@@ -2279,19 +2279,6 @@ rpc_check_timeout(struct rpc_task *task)
rpcauth_invalcred(task); rpcauth_invalcred(task);
} }
/*
* 6a. Handle RPC timeout
* We do not release the request slot, so we keep using the
* same XID for all retransmits.
*/
static void
call_timeout(struct rpc_task *task)
{
task->tk_action = call_encode;
task->tk_status = 0;
rpc_check_timeout(task);
}
/* /*
* 7. Decode the RPC reply * 7. Decode the RPC reply
*/ */
...@@ -2329,16 +2316,8 @@ call_decode(struct rpc_task *task) ...@@ -2329,16 +2316,8 @@ call_decode(struct rpc_task *task)
WARN_ON(memcmp(&req->rq_rcv_buf, &req->rq_private_buf, WARN_ON(memcmp(&req->rq_rcv_buf, &req->rq_private_buf,
sizeof(req->rq_rcv_buf)) != 0); sizeof(req->rq_rcv_buf)) != 0);
if (req->rq_rcv_buf.len < 12) { if (req->rq_rcv_buf.len < 12)
if (!RPC_IS_SOFT(task)) {
task->tk_action = call_encode;
goto out_retry;
}
dprintk("RPC: %s: too small RPC reply size (%d bytes)\n",
clnt->cl_program->name, task->tk_status);
task->tk_action = call_timeout;
goto out_retry; goto out_retry;
}
xdr_init_decode(&xdr, &req->rq_rcv_buf, xdr_init_decode(&xdr, &req->rq_rcv_buf,
req->rq_rcv_buf.head[0].iov_base, req); req->rq_rcv_buf.head[0].iov_base, req);
...@@ -2361,6 +2340,8 @@ call_decode(struct rpc_task *task) ...@@ -2361,6 +2340,8 @@ call_decode(struct rpc_task *task)
xprt_conditional_disconnect(req->rq_xprt, xprt_conditional_disconnect(req->rq_xprt,
req->rq_connect_cookie); req->rq_connect_cookie);
} }
task->tk_action = call_encode;
rpc_check_timeout(task);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment