nfsd: eliminate cl_ra_cblist and NFSD4_CLIENT_CB_RECALL_ANY
authorJeff Layton <jlayton@kernel.org>
Thu, 20 Feb 2025 16:47:14 +0000 (11:47 -0500)
committerChuck Lever <chuck.lever@oracle.com>
Mon, 10 Mar 2025 13:11:09 +0000 (09:11 -0400)
commit424dd3df1f991b14a70f044a68c8a595abbdf1ad
treeaaf860698cfb4a42a9a3f92d81f996977fd34493
parent1054e8ffc5c492f341bdf1888b882f1d163dd3d8
nfsd: eliminate cl_ra_cblist and NFSD4_CLIENT_CB_RECALL_ANY

deleg_reaper() will walk the client_lru list and put any suitable
entries onto "cblist" using the cl_ra_cblist pointer. It then walks the
objects outside the spinlock and queues callbacks for them.

None of the operations that deleg_reaper() does outside the
nn->client_lock are blocking operations. Just queue their workqueue jobs
under the nn->client_lock instead.

Also, the NFSD4_CLIENT_CB_RECALL_ANY and NFSD4_CALLBACK_RUNNING flags
serve an identical purpose now. Drop the NFSD4_CLIENT_CB_RECALL_ANY flag
and just use the one in the callback.

Signed-off-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfsd/nfs4state.c
fs/nfsd/state.h