mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-24 14:07:52 -04:00
SUNRPC: remove timeout arg from svc_recv()
Most svc threads have no interest in a timeout. nfsd sets it to 1 hour, but this is a wart of no significance. lockd uses the timeout so that it can call nlmsvc_retry_blocked(). It also sometimes calls svc_wake_up() to ensure this is called. So change lockd to be consistent and always use svc_wake_up() to trigger nlmsvc_retry_blocked() - using a timer instead of a timeout to svc_recv(). And change svc_recv() to not take a timeout arg. This makes the sp_threads_timedout counter always zero. Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
7b719e2bf3
commit
c743b4259c
9 changed files with 34 additions and 32 deletions
|
@ -56,6 +56,12 @@ static unsigned int nlmsvc_users;
|
|||
static struct svc_serv *nlmsvc_serv;
|
||||
unsigned long nlmsvc_timeout;
|
||||
|
||||
static void nlmsvc_request_retry(struct timer_list *tl)
|
||||
{
|
||||
svc_wake_up(nlmsvc_serv);
|
||||
}
|
||||
DEFINE_TIMER(nlmsvc_retry, nlmsvc_request_retry);
|
||||
|
||||
unsigned int lockd_net_id;
|
||||
|
||||
/*
|
||||
|
@ -130,14 +136,11 @@ lockd(void *vrqstp)
|
|||
* NFS mount or NFS daemon has gone away.
|
||||
*/
|
||||
while (!kthread_should_stop()) {
|
||||
long timeout = MAX_SCHEDULE_TIMEOUT;
|
||||
|
||||
/* update sv_maxconn if it has changed */
|
||||
rqstp->rq_server->sv_maxconn = nlm_max_connections;
|
||||
|
||||
timeout = nlmsvc_retry_blocked();
|
||||
|
||||
svc_recv(rqstp, timeout);
|
||||
nlmsvc_retry_blocked();
|
||||
svc_recv(rqstp);
|
||||
}
|
||||
if (nlmsvc_ops)
|
||||
nlmsvc_invalidate_all();
|
||||
|
@ -371,6 +374,7 @@ static void lockd_put(void)
|
|||
#endif
|
||||
|
||||
svc_set_num_threads(nlmsvc_serv, NULL, 0);
|
||||
timer_delete_sync(&nlmsvc_retry);
|
||||
nlmsvc_serv = NULL;
|
||||
dprintk("lockd_down: service destroyed\n");
|
||||
}
|
||||
|
|
|
@ -1019,7 +1019,7 @@ retry_deferred_block(struct nlm_block *block)
|
|||
* picks up locks that can be granted, or grant notifications that must
|
||||
* be retransmitted.
|
||||
*/
|
||||
unsigned long
|
||||
void
|
||||
nlmsvc_retry_blocked(void)
|
||||
{
|
||||
unsigned long timeout = MAX_SCHEDULE_TIMEOUT;
|
||||
|
@ -1049,5 +1049,6 @@ nlmsvc_retry_blocked(void)
|
|||
}
|
||||
spin_unlock(&nlm_blocked_lock);
|
||||
|
||||
return timeout;
|
||||
if (timeout < MAX_SCHEDULE_TIMEOUT)
|
||||
mod_timer(&nlmsvc_retry, jiffies + timeout);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue