On 01/04, heyunlei wrote:
> 
> 
> >-----Original Message-----
> >From: Yuchao (T)
> >Sent: Thursday, January 04, 2018 11:02 AM
> >To: heyunlei; [email protected]; [email protected]
> >Cc: Wangbintian; Jianing (Euler)
> >Subject: Re: [f2fs-dev][PATCH] f2fs: update inode info to inode page for new 
> >file
> >
> >On 2018/1/3 18:03, Yunlei He wrote:
> >>                    |
> >>                    | 1. creat a new file A ,(with dirty inode
> >>                    |    && dirty inode page && xattr info)
> >>                    | 2. backgroud wb write back file A inode
> >>    last checkpoint |    page (without update from inode cache)
> >>                    | 3. fsync file A, write back inode page of
> >>                    |    file A with inode cache info
> >>                    | 4. sudden power off before new checkpoint
> >>
> >> In this case, recovery process will try to recover a zero inode
> >> page. Inline xattr flag of file A will be miss and xattr info
> >> will be taken as blkaddr index.
> >>
> >> Signed-off-by: Yunlei He <[email protected]>
> >> ---
> >>  fs/f2fs/dir.c | 2 ++
> >>  1 file changed, 2 insertions(+)
> >>
> >> diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c
> >> index 724304d..d04dcac 100644
> >> --- a/fs/f2fs/dir.c
> >> +++ b/fs/f2fs/dir.c
> >> @@ -427,6 +427,8 @@ struct page *init_inode_metadata(struct inode *inode, 
> >> struct inode *dir,
> >>                    remove_orphan_inode(F2FS_I_SB(dir), inode->i_ino);
> >>            f2fs_i_links_write(inode, true);
> >>    }
> >> +
> >> +  update_inode(inode, page);
> >
> >That would cause memory copy overhead, how about always keeping consistent
> >in-memory inode meta info with the data in recovering inode block as below:
> >
> >recover_inline_xattr()
> >
> >     if (ri->i_inline & F2FS_INLINE_XATTR) {
> >             set_inode_flag(inode, FI_INLINE_XATTR);
> >     } else {
> >             clear_inode_flag(inode, FI_INLINE_XATTR);
> >             goto update_inode;
> >     }

Ah I see. That doesn't represent parallel things. :P

> >
> >Thanks, 
> 
> Okay, My f2fs module is not support flexible inline xattr size, this change 
> is enough
> for this problem.

Let me merge this patch with this.

Thanks,

> 
> Thanks.
> 
> >
> >>    return page;
> >>
> >>  put_error:
> >>

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to