Loading fs/nfsd/filecache.c +14 −5 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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); } Loading Loading
fs/nfsd/filecache.c +14 −5 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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); } Loading