mirror of
https://github.com/torvalds/linux.git
synced 2025-04-09 14:45:27 +00:00
vfs: Remove invalidate_inodes()
The function can be replaced by evict_inodes. The only difference is that evict_inodes() skips the inodes with positive refcount without touching ->i_lock, but they are equivalent as evict_inodes() repeats the refcount check after having grabbed ->i_lock. Signed-off-by: Jan Kara <jack@suse.cz> Link: https://lore.kernel.org/r/20250307144318.28120-2-jack@suse.cz Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
66447acc09
commit
93fd0d46cb
@ -1157,3 +1157,8 @@ in normal case it points into the pathname being looked up.
|
||||
NOTE: if you need something like full path from the root of filesystem,
|
||||
you are still on your own - this assists with simple cases, but it's not
|
||||
magic.
|
||||
|
||||
---
|
||||
|
||||
** mandatory **
|
||||
invalidate_inodes() is gone use evict_inodes() instead.
|
||||
|
40
fs/inode.c
40
fs/inode.c
@ -910,46 +910,6 @@ again:
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(evict_inodes);
|
||||
|
||||
/**
|
||||
* invalidate_inodes - attempt to free all inodes on a superblock
|
||||
* @sb: superblock to operate on
|
||||
*
|
||||
* Attempts to free all inodes (including dirty inodes) for a given superblock.
|
||||
*/
|
||||
void invalidate_inodes(struct super_block *sb)
|
||||
{
|
||||
struct inode *inode, *next;
|
||||
LIST_HEAD(dispose);
|
||||
|
||||
again:
|
||||
spin_lock(&sb->s_inode_list_lock);
|
||||
list_for_each_entry_safe(inode, next, &sb->s_inodes, i_sb_list) {
|
||||
spin_lock(&inode->i_lock);
|
||||
if (inode->i_state & (I_NEW | I_FREEING | I_WILL_FREE)) {
|
||||
spin_unlock(&inode->i_lock);
|
||||
continue;
|
||||
}
|
||||
if (atomic_read(&inode->i_count)) {
|
||||
spin_unlock(&inode->i_lock);
|
||||
continue;
|
||||
}
|
||||
|
||||
inode->i_state |= I_FREEING;
|
||||
inode_lru_list_del(inode);
|
||||
spin_unlock(&inode->i_lock);
|
||||
list_add(&inode->i_lru, &dispose);
|
||||
if (need_resched()) {
|
||||
spin_unlock(&sb->s_inode_list_lock);
|
||||
cond_resched();
|
||||
dispose_list(&dispose);
|
||||
goto again;
|
||||
}
|
||||
}
|
||||
spin_unlock(&sb->s_inode_list_lock);
|
||||
|
||||
dispose_list(&dispose);
|
||||
}
|
||||
|
||||
/*
|
||||
* Isolate the inode from the LRU in preparation for freeing it.
|
||||
*
|
||||
|
@ -207,7 +207,6 @@ bool in_group_or_capable(struct mnt_idmap *idmap,
|
||||
* fs-writeback.c
|
||||
*/
|
||||
extern long get_nr_dirty_inodes(void);
|
||||
void invalidate_inodes(struct super_block *sb);
|
||||
|
||||
/*
|
||||
* dcache.c
|
||||
|
@ -387,7 +387,7 @@ cifs_mark_open_files_invalid(struct cifs_tcon *tcon)
|
||||
spin_unlock(&tcon->tc_lock);
|
||||
|
||||
/*
|
||||
* BB Add call to invalidate_inodes(sb) for all superblocks mounted
|
||||
* BB Add call to evict_inodes(sb) for all superblocks mounted
|
||||
* to this tcon.
|
||||
*/
|
||||
}
|
||||
|
@ -1417,7 +1417,7 @@ static void fs_bdev_mark_dead(struct block_device *bdev, bool surprise)
|
||||
if (!surprise)
|
||||
sync_filesystem(sb);
|
||||
shrink_dcache_sb(sb);
|
||||
invalidate_inodes(sb);
|
||||
evict_inodes(sb);
|
||||
if (sb->s_op->shutdown)
|
||||
sb->s_op->shutdown(sb);
|
||||
|
||||
|
@ -1216,7 +1216,7 @@ static void hook_inode_free_security_rcu(void *inode_security)
|
||||
/*
|
||||
* Release the inodes used in a security policy.
|
||||
*
|
||||
* Cf. fsnotify_unmount_inodes() and invalidate_inodes()
|
||||
* Cf. fsnotify_unmount_inodes() and evict_inodes()
|
||||
*/
|
||||
static void hook_sb_delete(struct super_block *const sb)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user