Hi Jaegeuk, On 2016/10/12 6:19, Jaegeuk Kim wrote: > Hi Chao, > > On Tue, Oct 11, 2016 at 10:56:59PM +0800, Chao Yu wrote: >> From: Chao Yu <yuch...@huawei.com> >> >> We don't need to keep incomplete created inode in cache, so if we fail to >> add link into directory during new inode creation, it's better to set >> nlink of inode to zero, then we can evict inode immediately. Otherwise >> release of nid belong to inode will be delayed until inode cache is being >> shrunk, it may cause a seemingly endless loop while allocating free nids >> in time of testing generic/269 case of fstest suit. >> >> Signed-off-by: Chao Yu <yuch...@huawei.com> >> --- >> fs/f2fs/inode.c | 8 ++++++++ >> 1 file changed, 8 insertions(+) >> >> diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c >> index d736989..34ae03c 100644 >> --- a/fs/f2fs/inode.c >> +++ b/fs/f2fs/inode.c >> @@ -384,6 +384,8 @@ retry: >> f2fs_lock_op(sbi); >> err = remove_inode_page(inode); >> f2fs_unlock_op(sbi); >> + if (err == -ENOENT) >> + err = 0; >> } >> >> /* give more chances, if ENOMEM case */ >> @@ -424,6 +426,12 @@ void handle_failed_inode(struct inode *inode) >> struct f2fs_sb_info *sbi = F2FS_I_SB(inode); >> struct node_info ni; >> >> + /* >> + * clear nlink of inode in order to release resource of inode >> + * immediately. >> + */ >> + clear_nlink(inode); > > We must call update_inode_page() here to avoid kernel panic. > Otherwise, this inode is kept in the gdirty list, resulting in kernel panic > when flushg dirty inodes, since it was already evicted.
Thanks for fixing this, is this panic produced with fault injection? Thanks, > > I fixed this and started a round of tests. > > Thanks, > >> + >> /* don't make bad inode, since it becomes a regular file. */ >> unlock_new_inode(inode); >> >> -- >> 2.10.1 ------------------------------------------------------------------------------ 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 Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel