Message ID | 1708473508-19620-1-git-send-email-dai.ngo@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/1] NFSD: send OP_CB_RECALL_ANY to clients when number of delegations reaches its limit | expand |
hi Dai, On 20/02/2024 11:58 pm, 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 > hand out delegations for new requests. > > Signed-off-by: Dai Ngo <dai.ngo@oracle.com> > --- > fs/nfsd/nfs4state.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c > index fdc95bfbfbb6..a0bd6f6b994d 100644 > --- a/fs/nfsd/nfs4state.c > +++ b/fs/nfsd/nfs4state.c > @@ -130,6 +130,7 @@ static const struct nfsd4_callback_ops nfsd4_cb_notify_lock_ops; > static const struct nfsd4_callback_ops nfsd4_cb_getattr_ops; > > static struct workqueue_struct *laundry_wq; > +static void deleg_reaper(struct nfsd_net *nn); Nits: If this is actually needed (you seem to be calling it after it is defined?), shouldn't it be with the other forward decls around lines 84–89? cheers, calum. > > int nfsd4_create_laundry_wq(void) > { > @@ -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); > }
On 2/21/24 2:55 PM, Calum Mackay wrote: > hi Dai, > > On 20/02/2024 11:58 pm, 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 >> hand out delegations for new requests. >> >> Signed-off-by: Dai Ngo <dai.ngo@oracle.com> >> --- >> fs/nfsd/nfs4state.c | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c >> index fdc95bfbfbb6..a0bd6f6b994d 100644 >> --- a/fs/nfsd/nfs4state.c >> +++ b/fs/nfsd/nfs4state.c >> @@ -130,6 +130,7 @@ static const struct nfsd4_callback_ops >> nfsd4_cb_notify_lock_ops; >> static const struct nfsd4_callback_ops nfsd4_cb_getattr_ops; >> static struct workqueue_struct *laundry_wq; >> +static void deleg_reaper(struct nfsd_net *nn); > > Nits: If this is actually needed (you seem to be calling it after it > is defined?), Yes, it's needed for a clean build: fs/nfsd/nfs4state.c:6554:17: error: implicit declaration of function ‘deleg_reaper’ [-Werror=implicit-function-declaration] > shouldn't it be with the other forward decls around lines 84–89? I'll move it up in v2. Thanks, -Dai > > cheers, > calum. > >> int nfsd4_create_laundry_wq(void) >> { >> @@ -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); >> } > >
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index fdc95bfbfbb6..a0bd6f6b994d 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -130,6 +130,7 @@ static const struct nfsd4_callback_ops nfsd4_cb_notify_lock_ops; static const struct nfsd4_callback_ops nfsd4_cb_getattr_ops; static struct workqueue_struct *laundry_wq; +static void deleg_reaper(struct nfsd_net *nn); int nfsd4_create_laundry_wq(void) { @@ -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); }
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 hand out delegations for new requests. Signed-off-by: Dai Ngo <dai.ngo@oracle.com> --- fs/nfsd/nfs4state.c | 3 +++ 1 file changed, 3 insertions(+)