>-----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; > } > >Thanks,
Okay, My f2fs module is not support flexible inline xattr size, this change is enough for this problem. 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
