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
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);
>
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);
>>
>
>
> .
>
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);
> > >
> >
> > .
> >