Message ID | 1668656688-22507-2-git-send-email-dai.ngo@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | add support for CB_RECALL_ANY and the delegation reaper | expand |
> On Nov 16, 2022, at 10:44 PM, Dai Ngo <dai.ngo@oracle.com> wrote: > > Refactoring courtesy_client_reaper to generic low memory > shrinker so it can be used for other purposes. > > Signed-off-by: Dai Ngo <dai.ngo@oracle.com> > --- > fs/nfsd/nfs4state.c | 25 ++++++++++++++++--------- > 1 file changed, 16 insertions(+), 9 deletions(-) > > diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c > index 836bd825ca4a..142481bc96de 100644 > --- a/fs/nfsd/nfs4state.c > +++ b/fs/nfsd/nfs4state.c > @@ -4347,7 +4347,7 @@ nfsd4_init_slabs(void) > } > > static unsigned long > -nfsd_courtesy_client_count(struct shrinker *shrink, struct shrink_control *sc) > +nfsd_lowmem_shrinker_count(struct shrinker *shrink, struct shrink_control *sc) > { > int cnt; > struct nfsd_net *nn = container_of(shrink, > @@ -4360,7 +4360,7 @@ nfsd_courtesy_client_count(struct shrinker *shrink, struct shrink_control *sc) > } > > static unsigned long > -nfsd_courtesy_client_scan(struct shrinker *shrink, struct shrink_control *sc) > +nfsd_lowmem_shrinker_scan(struct shrinker *shrink, struct shrink_control *sc) > { > return SHRINK_STOP; > } > @@ -4387,8 +4387,8 @@ nfsd4_init_leases_net(struct nfsd_net *nn) > nn->nfs4_max_clients = max_t(int, max_clients, NFS4_CLIENTS_PER_GB); > > atomic_set(&nn->nfsd_courtesy_clients, 0); > - nn->nfsd_client_shrinker.scan_objects = nfsd_courtesy_client_scan; > - nn->nfsd_client_shrinker.count_objects = nfsd_courtesy_client_count; > + nn->nfsd_client_shrinker.scan_objects = nfsd_lowmem_shrinker_scan; > + nn->nfsd_client_shrinker.count_objects = nfsd_lowmem_shrinker_count; > nn->nfsd_client_shrinker.seeks = DEFAULT_SEEKS; > return register_shrinker(&nn->nfsd_client_shrinker, "nfsd-client"); > } > @@ -6125,17 +6125,24 @@ laundromat_main(struct work_struct *laundry) > } > > static void > -courtesy_client_reaper(struct work_struct *reaper) > +courtesy_client_reaper(struct nfsd_net *nn) > { > struct list_head reaplist; > - struct delayed_work *dwork = to_delayed_work(reaper); > - struct nfsd_net *nn = container_of(dwork, struct nfsd_net, > - nfsd_shrinker_work); > > nfs4_get_courtesy_client_reaplist(nn, &reaplist); > nfs4_process_client_reaplist(&reaplist); > } > > +static void > +nfsd4_lowmem_shrinker(struct work_struct *work) All shrinkers run due to low memory, so I think this name is a bit redundant. How about nfsd4_state_shrinker? > +{ > + struct delayed_work *dwork = to_delayed_work(work); > + struct nfsd_net *nn = container_of(dwork, struct nfsd_net, > + nfsd_shrinker_work); > + > + courtesy_client_reaper(nn); > +} > + > static inline __be32 nfs4_check_fh(struct svc_fh *fhp, struct nfs4_stid *stp) > { > if (!fh_match(&fhp->fh_handle, &stp->sc_file->fi_fhandle)) > @@ -7958,7 +7965,7 @@ static int nfs4_state_create_net(struct net *net) > INIT_LIST_HEAD(&nn->blocked_locks_lru); > > INIT_DELAYED_WORK(&nn->laundromat_work, laundromat_main); > - INIT_DELAYED_WORK(&nn->nfsd_shrinker_work, courtesy_client_reaper); > + INIT_DELAYED_WORK(&nn->nfsd_shrinker_work, nfsd4_lowmem_shrinker); > get_net(net); > > return 0; > -- > 2.9.5 > -- Chuck Lever
On 11/17/22 6:45 AM, Chuck Lever III wrote: > >> On Nov 16, 2022, at 10:44 PM, Dai Ngo <dai.ngo@oracle.com> wrote: >> >> Refactoring courtesy_client_reaper to generic low memory >> shrinker so it can be used for other purposes. >> >> Signed-off-by: Dai Ngo <dai.ngo@oracle.com> >> --- >> fs/nfsd/nfs4state.c | 25 ++++++++++++++++--------- >> 1 file changed, 16 insertions(+), 9 deletions(-) >> >> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c >> index 836bd825ca4a..142481bc96de 100644 >> --- a/fs/nfsd/nfs4state.c >> +++ b/fs/nfsd/nfs4state.c >> @@ -4347,7 +4347,7 @@ nfsd4_init_slabs(void) >> } >> >> static unsigned long >> -nfsd_courtesy_client_count(struct shrinker *shrink, struct shrink_control *sc) >> +nfsd_lowmem_shrinker_count(struct shrinker *shrink, struct shrink_control *sc) >> { >> int cnt; >> struct nfsd_net *nn = container_of(shrink, >> @@ -4360,7 +4360,7 @@ nfsd_courtesy_client_count(struct shrinker *shrink, struct shrink_control *sc) >> } >> >> static unsigned long >> -nfsd_courtesy_client_scan(struct shrinker *shrink, struct shrink_control *sc) >> +nfsd_lowmem_shrinker_scan(struct shrinker *shrink, struct shrink_control *sc) >> { >> return SHRINK_STOP; >> } >> @@ -4387,8 +4387,8 @@ nfsd4_init_leases_net(struct nfsd_net *nn) >> nn->nfs4_max_clients = max_t(int, max_clients, NFS4_CLIENTS_PER_GB); >> >> atomic_set(&nn->nfsd_courtesy_clients, 0); >> - nn->nfsd_client_shrinker.scan_objects = nfsd_courtesy_client_scan; >> - nn->nfsd_client_shrinker.count_objects = nfsd_courtesy_client_count; >> + nn->nfsd_client_shrinker.scan_objects = nfsd_lowmem_shrinker_scan; >> + nn->nfsd_client_shrinker.count_objects = nfsd_lowmem_shrinker_count; >> nn->nfsd_client_shrinker.seeks = DEFAULT_SEEKS; >> return register_shrinker(&nn->nfsd_client_shrinker, "nfsd-client"); >> } >> @@ -6125,17 +6125,24 @@ laundromat_main(struct work_struct *laundry) >> } >> >> static void >> -courtesy_client_reaper(struct work_struct *reaper) >> +courtesy_client_reaper(struct nfsd_net *nn) >> { >> struct list_head reaplist; >> - struct delayed_work *dwork = to_delayed_work(reaper); >> - struct nfsd_net *nn = container_of(dwork, struct nfsd_net, >> - nfsd_shrinker_work); >> >> nfs4_get_courtesy_client_reaplist(nn, &reaplist); >> nfs4_process_client_reaplist(&reaplist); >> } >> >> +static void >> +nfsd4_lowmem_shrinker(struct work_struct *work) > All shrinkers run due to low memory, so I think this name > is a bit redundant. How about nfsd4_state_shrinker? ok, it makes sense. Thanks, -Dai > > >> +{ >> + struct delayed_work *dwork = to_delayed_work(work); >> + struct nfsd_net *nn = container_of(dwork, struct nfsd_net, >> + nfsd_shrinker_work); >> + >> + courtesy_client_reaper(nn); >> +} >> + >> static inline __be32 nfs4_check_fh(struct svc_fh *fhp, struct nfs4_stid *stp) >> { >> if (!fh_match(&fhp->fh_handle, &stp->sc_file->fi_fhandle)) >> @@ -7958,7 +7965,7 @@ static int nfs4_state_create_net(struct net *net) >> INIT_LIST_HEAD(&nn->blocked_locks_lru); >> >> INIT_DELAYED_WORK(&nn->laundromat_work, laundromat_main); >> - INIT_DELAYED_WORK(&nn->nfsd_shrinker_work, courtesy_client_reaper); >> + INIT_DELAYED_WORK(&nn->nfsd_shrinker_work, nfsd4_lowmem_shrinker); >> get_net(net); >> >> return 0; >> -- >> 2.9.5 >> > -- > Chuck Lever > > >
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 836bd825ca4a..142481bc96de 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -4347,7 +4347,7 @@ nfsd4_init_slabs(void) } static unsigned long -nfsd_courtesy_client_count(struct shrinker *shrink, struct shrink_control *sc) +nfsd_lowmem_shrinker_count(struct shrinker *shrink, struct shrink_control *sc) { int cnt; struct nfsd_net *nn = container_of(shrink, @@ -4360,7 +4360,7 @@ nfsd_courtesy_client_count(struct shrinker *shrink, struct shrink_control *sc) } static unsigned long -nfsd_courtesy_client_scan(struct shrinker *shrink, struct shrink_control *sc) +nfsd_lowmem_shrinker_scan(struct shrinker *shrink, struct shrink_control *sc) { return SHRINK_STOP; } @@ -4387,8 +4387,8 @@ nfsd4_init_leases_net(struct nfsd_net *nn) nn->nfs4_max_clients = max_t(int, max_clients, NFS4_CLIENTS_PER_GB); atomic_set(&nn->nfsd_courtesy_clients, 0); - nn->nfsd_client_shrinker.scan_objects = nfsd_courtesy_client_scan; - nn->nfsd_client_shrinker.count_objects = nfsd_courtesy_client_count; + nn->nfsd_client_shrinker.scan_objects = nfsd_lowmem_shrinker_scan; + nn->nfsd_client_shrinker.count_objects = nfsd_lowmem_shrinker_count; nn->nfsd_client_shrinker.seeks = DEFAULT_SEEKS; return register_shrinker(&nn->nfsd_client_shrinker, "nfsd-client"); } @@ -6125,17 +6125,24 @@ laundromat_main(struct work_struct *laundry) } static void -courtesy_client_reaper(struct work_struct *reaper) +courtesy_client_reaper(struct nfsd_net *nn) { struct list_head reaplist; - struct delayed_work *dwork = to_delayed_work(reaper); - struct nfsd_net *nn = container_of(dwork, struct nfsd_net, - nfsd_shrinker_work); nfs4_get_courtesy_client_reaplist(nn, &reaplist); nfs4_process_client_reaplist(&reaplist); } +static void +nfsd4_lowmem_shrinker(struct work_struct *work) +{ + struct delayed_work *dwork = to_delayed_work(work); + struct nfsd_net *nn = container_of(dwork, struct nfsd_net, + nfsd_shrinker_work); + + courtesy_client_reaper(nn); +} + static inline __be32 nfs4_check_fh(struct svc_fh *fhp, struct nfs4_stid *stp) { if (!fh_match(&fhp->fh_handle, &stp->sc_file->fi_fhandle)) @@ -7958,7 +7965,7 @@ static int nfs4_state_create_net(struct net *net) INIT_LIST_HEAD(&nn->blocked_locks_lru); INIT_DELAYED_WORK(&nn->laundromat_work, laundromat_main); - INIT_DELAYED_WORK(&nn->nfsd_shrinker_work, courtesy_client_reaper); + INIT_DELAYED_WORK(&nn->nfsd_shrinker_work, nfsd4_lowmem_shrinker); get_net(net); return 0;
Refactoring courtesy_client_reaper to generic low memory shrinker so it can be used for other purposes. Signed-off-by: Dai Ngo <dai.ngo@oracle.com> --- fs/nfsd/nfs4state.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-)