Messages in this thread | | | From | Daeho Jeong <> | Date | Fri, 30 Sep 2022 13:01:37 -0700 | Subject | Re: [f2fs-dev] [PATCH v2] f2fs: introduce F2FS_IOC_START_ATOMIC_REPLACE |
| |
On Fri, Sep 30, 2022 at 9:04 AM Daeho Jeong <daeho43@gmail.com> 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,
| |