On Sun, 2024-03-03 at 14:23 -0800, Dai Ngo wrote: > The NFS server should ask clients to voluntarily return unused > delegations when the number of granted delegations reaches the > max_delegations. This is so that the server can continue to > grant delegations for new requests. > > Signed-off-by: Dai Ngo <dai.ngo@xxxxxxxxxx> > --- > fs/nfsd/nfs4state.c | 3 +++ > 1 file changed, 3 insertions(+) > > v2: move declaration of deleg_reaper() up to other forward > declarations in the file. > > diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c > index fdc95bfbfbb6..961000261b3e 100644 > --- a/fs/nfsd/nfs4state.c > +++ b/fs/nfsd/nfs4state.c > @@ -87,6 +87,7 @@ static void nfs4_free_ol_stateid(struct nfs4_stid *stid); > void nfsd4_end_grace(struct nfsd_net *nn); > static void _free_cpntf_state_locked(struct nfsd_net *nn, struct nfs4_cpntf_state *cps); > static void nfsd4_file_hash_remove(struct nfs4_file *fi); > +static void deleg_reaper(struct nfsd_net *nn); > > /* Locking: */ > > @@ -6550,6 +6551,8 @@ nfs4_laundromat(struct nfsd_net *nn) > /* service the server-to-server copy delayed unmount list */ > nfsd4_ssc_expire_umount(nn); > #endif > + if (atomic_long_read(&num_delegations) >= max_delegations) > + deleg_reaper(nn); > out: > return max_t(time64_t, lt.new_timeo, NFSD_LAUNDROMAT_MINTIMEOUT); > } Seems like a reasonable thing to do: Reviewed-by: Jeff Layton <jlayton@xxxxxxxxxx>