Commit 691d0b78 authored by Dai Ngo's avatar Dai Ngo Committed by Anna Schumaker
Browse files

SUNRPC: remove the maximum number of retries in call_bind_status



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: 0b760113 ("NLM: Don't hang forever on NLM unlock requests")
Reported-by: default avatarHelen Chao <helen.chao@oracle.com>
Tested-by: default avatarHelen Chao <helen.chao@oracle.com>
Signed-off-by: default avatarDai Ngo <dai.ngo@oracle.com>
Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
parent ec108d3c
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -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 *);
+0 −3
Original line number Diff line number Diff line
@@ -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:
+0 −1
Original line number Diff line number Diff line
@@ -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();