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 <zhangxiaoxu5@huawei.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
f02f3755db
commit
9c5948c248
1 changed files with 8 additions and 1 deletions
|
@ -1814,7 +1814,14 @@ call_encode(struct rpc_task *task)
|
||||||
rpc_delay(task, HZ >> 4);
|
rpc_delay(task, HZ >> 4);
|
||||||
break;
|
break;
|
||||||
case -EKEYEXPIRED:
|
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;
|
break;
|
||||||
default:
|
default:
|
||||||
rpc_call_rpcerror(task, task->tk_status);
|
rpc_call_rpcerror(task, task->tk_status);
|
||||||
|
|
Loading…
Add table
Reference in a new issue