Re: [PATCH 1/2] f2fs: mark inode dirty for FI_ATOMIC_COMMITTED flag

From: Chao Yu
Date: Thu Mar 14 2024 - 06:35:12 EST


On 2024/3/13 19:26, Sunmin Jeong wrote:
In f2fs_update_inode, i_size of the atomic file isn't updated until
FI_ATOMIC_COMMITTED flag is set. When committing atomic write right
after the writeback of the inode, i_size of the raw inode will not be
updated. It can cause the atomicity corruption due to a mismatch between
old file size and new data.

To prevent the problem, let's mark inode dirty for FI_ATOMIC_COMMITTED

Atomic write thread Writeback thread
__writeback_single_inode
write_inode
f2fs_update_inode
- skip i_size update
f2fs_ioc_commit_atomic_write
f2fs_commit_atomic_write
set_inode_flag(inode, FI_ATOMIC_COMMITTED)
f2fs_do_sync_file
f2fs_fsync_node_pages
- skip f2fs_update_inode since the inode is clean

Fixes: 3db1de0e582c ("f2fs: change the current atomic write way")
Cc: stable@xxxxxxxxxxxxxxx #v5.19+
Reviewed-by: Sungjong Seo <sj1557.seo@xxxxxxxxxxx>
Reviewed-by: Yeongjin Gil <youngjin.gil@xxxxxxxxxxx>
Signed-off-by: Sunmin Jeong <s_min.jeong@xxxxxxxxxxx>

Reviewed-by: Chao Yu <chao@xxxxxxxxxx>

Thanks,