Message ID | 1556530351-81780-1-git-send-email-zhangxiaoxu5@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | SUNRPC: task should be exit if encode return EKEYEXPIRED more times | expand |
ping. On 4/29/2019 5:32 PM, ZhangXiaoxu wrote: > If the rpc.gssd always return cred success, but now the cred is > expired, then the task will loop in call_refresh and call_transmit. > > Exit the rpc task after retry. > > Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@huawei.com> > --- > net/sunrpc/clnt.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c > index 8ff11dc..a32d3f1 100644 > --- a/net/sunrpc/clnt.c > +++ b/net/sunrpc/clnt.c > @@ -1793,7 +1793,14 @@ call_encode(struct rpc_task *task) > rpc_delay(task, HZ >> 4); > break; > case -EKEYEXPIRED: > - task->tk_action = call_refresh; > + if (!task->tk_cred_retry) { > + rpc_exit(task, task->tk_status); > + } else { > + task->tk_action = call_refresh; > + task->tk_cred_retry--; > + dprintk("RPC: %5u %s: retry refresh creds\n", > + task->tk_pid, __func__); > + } > break; > default: > rpc_exit(task, task->tk_status); >
ping. On 5/4/2019 2:15 PM, zhangxiaoxu (A) wrote: > ping. > > On 4/29/2019 5:32 PM, ZhangXiaoxu wrote: >> If the rpc.gssd always return cred success, but now the cred is >> expired, then the task will loop in call_refresh and call_transmit. >> >> Exit the rpc task after retry. >> >> Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@huawei.com> >> --- >> net/sunrpc/clnt.c | 9 ++++++++- >> 1 file changed, 8 insertions(+), 1 deletion(-) >> >> diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c >> index 8ff11dc..a32d3f1 100644 >> --- a/net/sunrpc/clnt.c >> +++ b/net/sunrpc/clnt.c >> @@ -1793,7 +1793,14 @@ call_encode(struct rpc_task *task) >> rpc_delay(task, HZ >> 4); >> break; >> case -EKEYEXPIRED: >> - task->tk_action = call_refresh; >> + if (!task->tk_cred_retry) { >> + rpc_exit(task, task->tk_status); >> + } else { >> + task->tk_action = call_refresh; >> + task->tk_cred_retry--; >> + dprintk("RPC: %5u %s: retry refresh creds\n", >> + task->tk_pid, __func__); >> + } >> break; >> default: >> rpc_exit(task, task->tk_status); >> > > > . >
Hi ZhangXiaoxu Both of your patches have been merged into Linux 5.2-rc1. Thanks for checking! Anna On Mon, 2019-05-13 at 09:48 +0800, zhangxiaoxu (A) wrote: > ping. > > On 5/4/2019 2:15 PM, zhangxiaoxu (A) wrote: > > ping. > > > > On 4/29/2019 5:32 PM, ZhangXiaoxu wrote: > > > If the rpc.gssd always return cred success, but now the cred is > > > expired, then the task will loop in call_refresh and call_transmit. > > > > > > Exit the rpc task after retry. > > > > > > Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@huawei.com> > > > --- > > > net/sunrpc/clnt.c | 9 ++++++++- > > > 1 file changed, 8 insertions(+), 1 deletion(-) > > > > > > diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c > > > index 8ff11dc..a32d3f1 100644 > > > --- a/net/sunrpc/clnt.c > > > +++ b/net/sunrpc/clnt.c > > > @@ -1793,7 +1793,14 @@ call_encode(struct rpc_task *task) > > > rpc_delay(task, HZ >> 4); > > > break; > > > case -EKEYEXPIRED: > > > - task->tk_action = call_refresh; > > > + if (!task->tk_cred_retry) { > > > + rpc_exit(task, task->tk_status); > > > + } else { > > > + task->tk_action = call_refresh; > > > + task->tk_cred_retry--; > > > + dprintk("RPC: %5u %s: retry refresh creds\n", > > > + task->tk_pid, __func__); > > > + } > > > break; > > > default: > > > rpc_exit(task, task->tk_status); > > > > > > > . > >
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index 8ff11dc..a32d3f1 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c @@ -1793,7 +1793,14 @@ call_encode(struct rpc_task *task) rpc_delay(task, HZ >> 4); break; case -EKEYEXPIRED: - task->tk_action = call_refresh; + if (!task->tk_cred_retry) { + rpc_exit(task, task->tk_status); + } else { + task->tk_action = call_refresh; + task->tk_cred_retry--; + dprintk("RPC: %5u %s: retry refresh creds\n", + task->tk_pid, __func__); + } break; default: rpc_exit(task, task->tk_status);
If the rpc.gssd always return cred success, but now the cred is expired, then the task will loop in call_refresh and call_transmit. Exit the rpc task after retry. Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@huawei.com> --- net/sunrpc/clnt.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)