Re: [PATCH v1 1/2] NFSD: Delay adding new entries to LRU

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 21 Aug 2025, Chuck Lever wrote:
> From: Chuck Lever <chuck.lever@xxxxxxxxxx>
> 
> Neil Brown observes:
> > I would not include RC_INPROG entries in the lru at all - they are
> > always ignored, and will be added when they are switched to
> > RCU_DONE.
> 
> I also removed a stale comment.
> 
> Suggested-by: NeilBrown <neil@xxxxxxxxxx>
> Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx>
> ---
>  fs/nfsd/nfscache.c | 6 ------
>  1 file changed, 6 deletions(-)
> 
> diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c
> index ba9d326b3de6..6c06cf24b5c7 100644
> --- a/fs/nfsd/nfscache.c
> +++ b/fs/nfsd/nfscache.c
> @@ -237,10 +237,6 @@ void nfsd_reply_cache_shutdown(struct nfsd_net *nn)
>  
>  }
>  
> -/*
> - * Move cache entry to end of LRU list, and queue the cleaner to run if it's
> - * not already scheduled.
> - */
>  static void
>  lru_put_end(struct nfsd_drc_bucket *b, struct nfsd_cacherep *rp)
>  {
> @@ -453,8 +449,6 @@ nfsd_cache_insert(struct nfsd_drc_bucket *b, struct nfsd_cacherep *key,
>  				nn->longest_chain_cachesize,
>  				atomic_read(&nn->num_drc_entries));
>  	}
> -
> -	lru_put_end(b, ret);
>  	return ret;

A result of this change is that entries in the lru never have
    ->c_state == RC_INPROG
They are always RC_DONE.

So this can be added to the patch:

--- a/fs/nfsd/nfscache.c
+++ b/fs/nfsd/nfscache.c
@@ -272,12 +272,6 @@ nfsd_prune_bucket_locked(struct nfsd_net *nn, struct nfsd_drc_bucket *b,
 
 	/* The bucket LRU is ordered oldest-first. */
 	list_for_each_entry_safe(rp, tmp, &b->lru_head, c_lru) {
-		/*
-		 * Don't free entries attached to calls that are still
-		 * in-progress, but do keep scanning the list.
-		 */
-		if (rp->c_state == RC_INPROG)
-			continue;
 
 		if (atomic_read(&nn->num_drc_entries) <= nn->max_drc_entries &&
 		    time_before(expiry, rp->c_timestamp))


With that added:

Reviewed-by: NeilBrown <neil@xxxxxxxxxx>

Thanks,
NeilBrown


>  }
>  
> -- 
> 2.50.0
> 
> 






[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux