On 2018/1/4 14:46, Jaegeuk Kim wrote: > 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
Please add, ;) Reviewed-by: Chao Yu <[email protected]> Thanks, > >>> >>> 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
