Messages in this thread | | | Subject | Re: [PATCH] f2fs: delete and free dirty dir freeing inode entry when sync dirty dir inodes | From | Jaegeuk Kim <> | Date | Tue, 22 Oct 2013 20:15:44 +0900 |
| |
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@cn.fujitsu.com> > --- > 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-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |