diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2022-07-08 21:26:03 +0300 |
---|---|---|
committer | Chuck Lever <chuck.lever@oracle.com> | 2022-07-30 03:12:01 +0300 |
commit | cb7ec76e73ff6640241c8f1f2f35c81d4005a2d6 (patch) | |
tree | a932e92bb043eb9b7c4b8317b2ca6f3dcb4a1607 /fs/nfsd | |
parent | a845511007a63467fee575353c706806c21218b1 (diff) | |
download | linux-cb7ec76e73ff6640241c8f1f2f35c81d4005a2d6.tar.xz |
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')
-rw-r--r-- | fs/nfsd/filecache.c | 19 |
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); } |