]> git.ipfire.org Git - thirdparty/linux.git/commit
fs: Fix missed inode writeback when racing with __writeback_single_inode
authorJan Kara <jack@suse.cz>
Mon, 27 Jul 2026 10:49:21 +0000 (12:49 +0200)
committerChristian Brauner <brauner@kernel.org>
Mon, 27 Jul 2026 14:25:31 +0000 (16:25 +0200)
commit5a499dad2c794c19bf8ad51429dce1d53d9d3e12
tree5da3f723279a93c1496b6de68d4ab2bb185e740e
parentb0bca4e95b03438cd2c20bb7be3e6e109d1a01fa
fs: Fix missed inode writeback when racing with __writeback_single_inode

When mmb_fsync_noflush() or simple_fsync_noflush() race with another
writeback of the same inode, they can see inode dirty bits are already
clear and skip inode writeback although the racing
__writeback_single_inode() didn't yet get to writing anything. This can
result in fsync(2) returning without properly persisting the inode.

We already have I_SYNC bit for this synchronization and
writeback_single_inode() properly uses it so just fix
mmb_fsync_noflush() and simple_fsync_noflush() to take it into account
as well.

Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/20260727104923.3828017-23-jack@suse.cz
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
fs/buffer.c
fs/libfs.c