nfsd: separate nfsd_last_thread() from nfsd_put()
authorNeilBrown <neilb@suse.de>
Mon, 31 Jul 2023 06:48:32 +0000 (16:48 +1000)
committerChuck Lever <chuck.lever@oracle.com>
Tue, 29 Aug 2023 21:45:22 +0000 (17:45 -0400)
commit9f28a971ee9fdf1bf8ce8c88b103f483be610277
treeaca1a38039b819f0795b869bb925f35ebc3b7ccf
parent18e4cf915543257eae2925671934937163f5639b
nfsd: separate nfsd_last_thread() from nfsd_put()

Now that the last nfsd thread is stopped by an explicit act of calling
svc_set_num_threads() with a count of zero, we only have a limited
number of places that can happen, and don't need to call
nfsd_last_thread() in nfsd_put()

So separate that out and call it at the two places where the number of
threads is set to zero.

Move the clearing of ->nfsd_serv and the call to svc_xprt_destroy_all()
into nfsd_last_thread(), as they are really part of the same action.

nfsd_put() is now a thin wrapper around svc_put(), so make it a static
inline.

nfsd_put() cannot be called after nfsd_last_thread(), so in a couple of
places we have to use svc_put() instead.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfsd/nfsd.h
fs/nfsd/nfssvc.c