On Fri, Sep 30, 2022 at 9:04 AM Daeho Jeong <daeho43@xxxxxxxxx> wrote:
Hi Daeho,
isize should be updated after tagging inode as atomic_write one?
otherwise f2fs_mark_inode_dirty_sync() may update isize to inode page,
latter checkpoint may persist that change? IIUC...
Thanks,
Hi Chao,
The first patch of this patchset prevents the inode page from being
updated as dirty for atomic file cases.
Is there any other chances for the inode page to be marked as dirty?
I mean:
Thread A Thread B
- f2fs_ioc_start_atomic_write
- f2fs_i_size_write(inode, 0)
- f2fs_mark_inode_dirty_sync
- checkpoint
- persist inode with incorrect zero isize
- set_inode_flag(inode, FI_ATOMIC_FILE)
Am I missing something?
So, f2fs_mark_inode_dirty_sync() will not work for atomic files
anymore, which means it doesn't make the inode dirty.
Plz, refer to the first patch of this patchset. Or I might be confused
with something. :(
I mean FI_ATOMIC_FILE was set after f2fs_i_size_write(), so inode will be set
as dirty.
Thanks,
Oh, I was confused that f2fs_update_inode() is called in
f2fs_mark_inode_dirty_sync().
That is called in f2fs_write_inode(). Let me fix this.
Hmm, I think the issue was already there before my patch.
So, how about making the inode flushed and clean if the inode is
already dirty when starting atomic write?
Thanks,