Re: [PATCH] SUNRPC: remove the maximum number of retries in call_bind_status

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2023-04-18 at 13:19 -0700, Dai Ngo wrote:
> Currently call_bind_status places a hard limit of 3 to the number of
> retries on EACCES error. This limit was done to prevent NLM unlock
> requests from being hang forever when the server keeps returning garbage.
> However this change causes problem for cases when NLM service takes
> longer than 9 seconds to register with the port mapper after a restart.
> 
> This patch removes this hard coded limit and let the RPC handles
> the retry based on the standard hard/soft task semantics.
> 
> Fixes: 0b760113a3a1 ("NLM: Don't hang forever on NLM unlock requests")
> Reported-by: Helen Chao <helen.chao@xxxxxxxxxx>
> Tested-by: Helen Chao <helen.chao@xxxxxxxxxx>
> Signed-off-by: Dai Ngo <dai.ngo@xxxxxxxxxx>
> ---
>  include/linux/sunrpc/sched.h | 3 +--
>  net/sunrpc/clnt.c            | 3 ---
>  net/sunrpc/sched.c           | 1 -
>  3 files changed, 1 insertion(+), 6 deletions(-)
> 
> diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h
> index b8ca3ecaf8d7..8ada7dc802d3 100644
> --- a/include/linux/sunrpc/sched.h
> +++ b/include/linux/sunrpc/sched.h
> @@ -90,8 +90,7 @@ struct rpc_task {
>  #endif
>  	unsigned char		tk_priority : 2,/* Task priority */
>  				tk_garb_retry : 2,
> -				tk_cred_retry : 2,
> -				tk_rebind_retry : 2;
> +				tk_cred_retry : 2;
>  };
>  
>  typedef void			(*rpc_action)(struct rpc_task *);
> diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
> index 0b0b9f1eed46..63b438d8564b 100644
> --- a/net/sunrpc/clnt.c
> +++ b/net/sunrpc/clnt.c
> @@ -2050,9 +2050,6 @@ call_bind_status(struct rpc_task *task)
>  			status = -EOPNOTSUPP;
>  			break;
>  		}
> -		if (task->tk_rebind_retry == 0)
> -			break;
> -		task->tk_rebind_retry--;
>  		rpc_delay(task, 3*HZ);
>  		goto retry_timeout;
>  	case -ENOBUFS:
> diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
> index be587a308e05..c8321de341ee 100644
> --- a/net/sunrpc/sched.c
> +++ b/net/sunrpc/sched.c
> @@ -817,7 +817,6 @@ rpc_init_task_statistics(struct rpc_task *task)
>  	/* Initialize retry counters */
>  	task->tk_garb_retry = 2;
>  	task->tk_cred_retry = 2;
> -	task->tk_rebind_retry = 2;
>  
>  	/* starting timestamp */
>  	task->tk_start = ktime_get();


Reviewed-by: Jeff Layton <jlayton@xxxxxxxxxx>




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux