Message ID | 20200509180609.5185.37691.stgit@manet.1015granger.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [RFC] SUNRPC: Signalled ASYNC tasks need to exit | expand |
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index 22d7e0a8694b..1b628b6aa172 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c @@ -2430,6 +2430,11 @@ void rpc_force_rebind(struct rpc_clnt *clnt) { struct rpc_clnt *clnt = task->tk_client; + if (RPC_SIGNALLED(task)) { + rpc_call_rpcerror(task, -ERESTARTSYS); + return; + } + if (xprt_adjust_timeout(task->tk_rqstp) == 0) return;
Ensure that signalled ASYNC rpc_tasks exit immediately instead of spinning until a timeout (or forever). To avoid checking for the signal flag on every scheduler iteration, the check is instead introduced in the client's finite state machine. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> --- net/sunrpc/clnt.c | 5 +++++ 1 file changed, 5 insertions(+)