diff options
author | Mateusz Guzik <mjguzik@gmail.com> | 2025-03-19 01:46:35 +0100 |
---|---|---|
committer | Christian Brauner <brauner@kernel.org> | 2025-03-19 09:28:13 +0100 |
commit | 5a607aa94398760585579649f0881d2d354f4e00 (patch) | |
tree | 9de84ef5437d0f66864d54bee1b0559d9f39b045 | |
parent | eb7e453a83007d019d718c6b3666a1c082b676b0 (diff) |
fs: load the ->i_sb pointer once in inode_sb_list_{add,del}
While this may sound like a pedantic clean up, it does in fact impact
code generation -- the patched add routine is slightly smaller.
Signed-off-by: Mateusz Guzik <mjguzik@gmail.com>
Link: https://lore.kernel.org/r/20250319004635.1820589-1-mjguzik@gmail.com
Signed-off-by: Christian Brauner <brauner@kernel.org>
-rw-r--r-- | fs/inode.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/fs/inode.c b/fs/inode.c index 4c3be44838a5..d7fe28dd9e81 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -623,18 +623,22 @@ static void inode_wait_for_lru_isolating(struct inode *inode) */ void inode_sb_list_add(struct inode *inode) { - spin_lock(&inode->i_sb->s_inode_list_lock); - list_add(&inode->i_sb_list, &inode->i_sb->s_inodes); - spin_unlock(&inode->i_sb->s_inode_list_lock); + struct super_block *sb = inode->i_sb; + + spin_lock(&sb->s_inode_list_lock); + list_add(&inode->i_sb_list, &sb->s_inodes); + spin_unlock(&sb->s_inode_list_lock); } EXPORT_SYMBOL_GPL(inode_sb_list_add); static inline void inode_sb_list_del(struct inode *inode) { + struct super_block *sb = inode->i_sb; + if (!list_empty(&inode->i_sb_list)) { - spin_lock(&inode->i_sb->s_inode_list_lock); + spin_lock(&sb->s_inode_list_lock); list_del_init(&inode->i_sb_list); - spin_unlock(&inode->i_sb->s_inode_list_lock); + spin_unlock(&sb->s_inode_list_lock); } } |