2019-04-29 09:28:45

by zhangxiaoxu (A)

[permalink] [raw]
Subject: [PATCH] SUNRPC: task should be exit if encode return EKEYEXPIRED more times

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 <[email protected]>
---
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);
--
2.7.4


2019-05-04 06:30:09

by zhangxiaoxu (A)

[permalink] [raw]
Subject: Re: [PATCH] SUNRPC: task should be exit if encode return EKEYEXPIRED more times

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 <[email protected]>
> ---
> 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);
>

2019-05-13 01:58:18

by zhangxiaoxu (A)

[permalink] [raw]
Subject: Re: [PATCH] SUNRPC: task should be exit if encode return EKEYEXPIRED more times

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 <[email protected]>
>> ---
>>   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);
>>
>
>
> .
>

2019-05-20 18:22:56

by Anna Schumaker

[permalink] [raw]
Subject: Re: [PATCH] SUNRPC: task should be exit if encode return EKEYEXPIRED more times

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 <[email protected]>
> > > ---
> > > 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);
> > >
> >
> > .
> >