]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
fat: Sync and invalidate metadata buffers from fat_evict_inode()
authorJan Kara <jack@suse.cz>
Thu, 26 Mar 2026 09:54:09 +0000 (10:54 +0100)
committerChristian Brauner <brauner@kernel.org>
Thu, 26 Mar 2026 14:03:28 +0000 (15:03 +0100)
There are only very few filesystems using generic metadata buffer head
tracking and everybody is paying the overhead. When we remove this
tracking for inode reclaim code .evict will start to see inodes with
metadata buffers attached so write them out and prune them.

Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/20260326095354.16340-57-jack@suse.cz
Tested-by: syzbot@syzkaller.appspotmail.com
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/fat/inode.c

index 3cc5fb01afa153df3f5929c158d7e87b5ca790e7..ce88602b0d575f5695a27e560e10e46937c1aef2 100644 (file)
@@ -657,8 +657,10 @@ static void fat_evict_inode(struct inode *inode)
        if (!inode->i_nlink) {
                inode->i_size = 0;
                fat_truncate_blocks(inode, 0);
-       } else
+       } else {
+               sync_mapping_buffers(inode->i_mapping);
                fat_free_eofblocks(inode);
+       }
 
        invalidate_inode_buffers(inode);
        clear_inode(inode);