提交 3b10b1fd 编写于 作者: J Jaegeuk Kim

f2fs: iput only if whole data blocks are flushed

If there remains some unwritten blocks from the recovery, we should not call
iput on that directory inode.
Otherwise, we can loose some dentry blocks after the recovery.
Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
上级 7a267f8d
......@@ -501,8 +501,10 @@ void remove_dirty_dir_inode(struct inode *inode)
return;
spin_lock(&sbi->dir_inode_lock);
if (atomic_read(&F2FS_I(inode)->dirty_dents))
goto out;
if (atomic_read(&F2FS_I(inode)->dirty_dents)) {
spin_unlock(&sbi->dir_inode_lock);
return;
}
list_for_each(this, head) {
struct dir_inode_entry *entry;
......@@ -516,7 +518,6 @@ void remove_dirty_dir_inode(struct inode *inode)
break;
}
}
out:
spin_unlock(&sbi->dir_inode_lock);
/* Only from the recovery routine */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册