NFSD: Zero counters when the filecache is re-initialized
authorChuck Lever <chuck.lever@oracle.com>
Fri, 8 Jul 2022 18:24:51 +0000 (14:24 -0400)
committerChuck Lever <chuck.lever@oracle.com>
Sat, 30 Jul 2022 00:10:07 +0000 (20:10 -0400)
If nfsd_file_cache_init() is called after a shutdown, be sure the
stat counters are reset.

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

index 1b525289562541b7322baa0471bb1187fdfd7802..777698a2e5a6aa90df7c7894eb8fa69564e73d30 100644 (file)
@@ -824,6 +824,8 @@ nfsd_file_cache_shutdown_net(struct net *net)
 void
 nfsd_file_cache_shutdown(void)
 {
+       int i;
+
        set_bit(NFSD_FILE_SHUTDOWN, &nfsd_file_lru_flags);
 
        lease_unregister_notifier(&nfsd_file_lease_notifier);
@@ -847,6 +849,15 @@ nfsd_file_cache_shutdown(void)
        nfsd_file_hashtbl = NULL;
        destroy_workqueue(nfsd_filecache_wq);
        nfsd_filecache_wq = NULL;
+
+       for_each_possible_cpu(i) {
+               per_cpu(nfsd_file_cache_hits, i) = 0;
+               per_cpu(nfsd_file_acquisitions, i) = 0;
+               per_cpu(nfsd_file_releases, i) = 0;
+               per_cpu(nfsd_file_total_age, i) = 0;
+               per_cpu(nfsd_file_pages_flushed, i) = 0;
+               per_cpu(nfsd_file_evictions, i) = 0;
+       }
 }
 
 static bool