]> www.infradead.org Git - users/jedix/linux-maple.git/commit
exfat: do not clear volume dirty flag during sync
authorYuezhang Mo <Yuezhang.Mo@sony.com>
Thu, 10 Apr 2025 23:26:14 +0000 (17:26 -0600)
committerNamjae Jeon <linkinjeon@kernel.org>
Mon, 26 May 2025 11:25:23 +0000 (20:25 +0900)
commit46a557694b464881b3c2c4a0ba389a6436419a37
treed35f78218ffbcd935faab3bdbde15387399ed312
parent1f3d9724e16d62c7d42c67d6613b8512f2887c22
exfat: do not clear volume dirty flag during sync

xfstests generic/482 tests the file system consistency after each
FUA operation. It fails when run on exfat.

exFAT clears the volume dirty flag with a FUA operation during sync.
Since s_lock is not held when data is being written to a file, sync
can be executed at the same time. When data is being written to a
file, the FAT chain is updated first, and then the file size is
updated. If sync is executed between updating them, the length of the
FAT chain may be inconsistent with the file size.

To avoid the situation where the file system is inconsistent but the
volume dirty flag is cleared, this commit moves the clearing of the
volume dirty flag from exfat_fs_sync() to exfat_put_super(), so that
the volume dirty flag is not cleared until unmounting. After the
move, there is no additional action during sync, so exfat_fs_sync()
can be deleted.

Reviewed-by: Sungjong Seo <sj1557.seo@samsung.com>
Signed-off-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
fs/exfat/super.c