NFSD: Report filecache LRU size
authorChuck Lever <chuck.lever@oracle.com>
Fri, 8 Jul 2022 18:23:52 +0000 (14:23 -0400)
committerChuck Lever <chuck.lever@oracle.com>
Sat, 30 Jul 2022 00:09:21 +0000 (20:09 -0400)
Surface the NFSD filecache's LRU list length to help field
troubleshooters monitor filecache issues.

Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfsd/filecache.c

index e1f98d3..c61c1cf 100644 (file)
@@ -1048,7 +1048,7 @@ nfsd_file_create(struct svc_rqst *rqstp, struct svc_fh *fhp,
 static int nfsd_file_cache_stats_show(struct seq_file *m, void *v)
 {
        unsigned int i, count = 0, longest = 0;
-       unsigned long hits = 0;
+       unsigned long lru = 0, hits = 0;
 
        /*
         * No need for spinlocks here since we're not terribly interested in
@@ -1061,6 +1061,7 @@ static int nfsd_file_cache_stats_show(struct seq_file *m, void *v)
                        count += nfsd_file_hashtbl[i].nfb_count;
                        longest = max(longest, nfsd_file_hashtbl[i].nfb_count);
                }
+               lru = list_lru_count(&nfsd_file_lru);
        }
        mutex_unlock(&nfsd_mutex);
 
@@ -1069,6 +1070,7 @@ static int nfsd_file_cache_stats_show(struct seq_file *m, void *v)
 
        seq_printf(m, "total entries: %u\n", count);
        seq_printf(m, "longest chain: %u\n", longest);
+       seq_printf(m, "lru entries:   %lu\n", lru);
        seq_printf(m, "cache hits:    %lu\n", hits);
        return 0;
 }