]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
NFSD: nfsd_file_hash_remove can compute hashval
authorChuck Lever <chuck.lever@oracle.com>
Fri, 8 Jul 2022 18:26:03 +0000 (14:26 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 10 Apr 2024 14:19:10 +0000 (16:19 +0200)
[ Upstream commit cb7ec76e73ff6640241c8f1f2f35c81d4005a2d6 ]

Remove an unnecessary use of nf_hashval.

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

index 3925df9124c391bb0d03b279ceb44cd320a0d618..dd59deec8b011f3b279d32abd41e51c0e35d0050 100644 (file)
@@ -287,6 +287,18 @@ nfsd_file_do_unhash(struct nfsd_file *nf)
        atomic_long_dec(&nfsd_filecache_count);
 }
 
+static void
+nfsd_file_hash_remove(struct nfsd_file *nf)
+{
+       struct inode *inode = nf->nf_inode;
+       unsigned int hashval = (unsigned int)hash_long(inode->i_ino,
+                               NFSD_FILE_HASH_BITS);
+
+       spin_lock(&nfsd_file_hashtbl[hashval].nfb_lock);
+       nfsd_file_do_unhash(nf);
+       spin_unlock(&nfsd_file_hashtbl[hashval].nfb_lock);
+}
+
 static bool
 nfsd_file_unhash(struct nfsd_file *nf)
 {
@@ -506,11 +518,8 @@ static void nfsd_file_gc_dispose_list(struct list_head *dispose)
 {
        struct nfsd_file *nf;
 
-       list_for_each_entry(nf, dispose, nf_lru) {
-               spin_lock(&nfsd_file_hashtbl[nf->nf_hashval].nfb_lock);
-               nfsd_file_do_unhash(nf);
-               spin_unlock(&nfsd_file_hashtbl[nf->nf_hashval].nfb_lock);
-       }
+       list_for_each_entry(nf, dispose, nf_lru)
+               nfsd_file_hash_remove(nf);
        nfsd_file_dispose_list_delayed(dispose);
 }