Skip to content

Commit 4bf7832

Browse files
Sunmin JeongJaegeuk Kim
authored andcommitted
f2fs: mark inode dirty for FI_ATOMIC_COMMITTED flag
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: 3db1de0 ("f2fs: change the current atomic write way") Cc: [email protected] #v5.19+ Reviewed-by: Sungjong Seo <[email protected]> Reviewed-by: Yeongjin Gil <[email protected]> Signed-off-by: Sunmin Jeong <[email protected]> Reviewed-by: Daeho Jeong <[email protected]> Reviewed-by: Chao Yu <[email protected]> Signed-off-by: Jaegeuk Kim <[email protected]>
1 parent c644af1 commit 4bf7832

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

fs/f2fs/f2fs.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3037,6 +3037,7 @@ static inline void __mark_inode_dirty_flag(struct inode *inode,
30373037
case FI_INLINE_DOTS:
30383038
case FI_PIN_FILE:
30393039
case FI_COMPRESS_RELEASED:
3040+
case FI_ATOMIC_COMMITTED:
30403041
f2fs_mark_inode_dirty_sync(inode, true);
30413042
}
30423043
}

0 commit comments

Comments
 (0)