]> www.infradead.org Git - users/hch/misc.git/commitdiff
NFSD: Delay adding new entries to LRU
authorChuck Lever <chuck.lever@oracle.com>
Thu, 21 Aug 2025 14:53:20 +0000 (10:53 -0400)
committerChuck Lever <chuck.lever@oracle.com>
Sun, 21 Sep 2025 23:24:50 +0000 (19:24 -0400)
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@brown.name>
Reviewed-by: NeilBrown <neil@brown.name>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfsd/nfscache.c

index ba9d326b3de647778b4377359bcaa0d8db204a73..d929c8c63bd91cd0e317159ea17fe819d1fd191e 100644 (file)
@@ -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)
 {
@@ -272,13 +268,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))
                        break;
@@ -453,8 +442,6 @@ out:
                                nn->longest_chain_cachesize,
                                atomic_read(&nn->num_drc_entries));
        }
-
-       lru_put_end(b, ret);
        return ret;
 }