2013-10-21 (월), 15:19 +0800, Gu Zheng: > In sync_dirty_dir_inodes(), remove_dirty_dir_inode() will be called > in the callback of filemap_flush to delete and free dirty dir inode entry. > But for the freeing inode entry, missed this step after sbumit data bio, > and this may lead to a dead loop if these is freeing inode entry in > dir_inode_list. So add the delete and free step to fix it. Hi Gu, This dirty inode will be removed by f2fs_evict_inode() after submitting any pending bio, f2fs_submit_bio(). Thanks, > > Signed-off-by: Gu Zheng <guz.fnst@xxxxxxxxxxxxxx> > --- > fs/f2fs/checkpoint.c | 9 +++++++++ > 1 files changed, 9 insertions(+), 0 deletions(-) > > diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c > index 8d16071..f61838f 100644 > --- a/fs/f2fs/checkpoint.c > +++ b/fs/f2fs/checkpoint.c > @@ -600,7 +600,16 @@ retry: > * wribacking dentry pages in the freeing inode. > */ > f2fs_submit_bio(sbi, DATA, true); > + > + spin_lock(&sbi->dir_inode_lock); > + list_del(&entry->list); > +#ifdef CONFIG_F2FS_STAT_FS > + sbi->n_dirty_dirs--; > +#endif > + spin_unlock(&sbi->dir_inode_lock); > + kmem_cache_free(inode_entry_slab, entry); > } > + > goto retry; > } > -- Jaegeuk Kim Samsung -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html