summaryrefslogtreecommitdiffstats
path: root/fs/nfsd/filecache.c
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2022-07-08 14:26:03 -0400
committerChuck Lever <chuck.lever@oracle.com>2022-07-29 20:12:01 -0400
commitcb7ec76e73ff6640241c8f1f2f35c81d4005a2d6 (patch)
treea932e92bb043eb9b7c4b8317b2ca6f3dcb4a1607 /fs/nfsd/filecache.c
parenta845511007a63467fee575353c706806c21218b1 (diff)
downloadlinux-cb7ec76e73ff6640241c8f1f2f35c81d4005a2d6.tar.bz2
NFSD: nfsd_file_hash_remove can compute hashval
Remove an unnecessary use of nf_hashval. Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'fs/nfsd/filecache.c')
-rw-r--r--fs/nfsd/filecache.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/fs/nfsd/filecache.c b/fs/nfsd/filecache.c
index 1ff58978421c..0766f6f39f16 100644
--- a/fs/nfsd/filecache.c
+++ b/fs/nfsd/filecache.c
@@ -288,6 +288,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)
{
@@ -507,11 +519,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);
}