Commit 3b10b1fd authored by Jaegeuk Kim's avatar 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: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
parent 7a267f8d
...@@ -501,8 +501,10 @@ void remove_dirty_dir_inode(struct inode *inode) ...@@ -501,8 +501,10 @@ void remove_dirty_dir_inode(struct inode *inode)
return; return;
spin_lock(&sbi->dir_inode_lock); spin_lock(&sbi->dir_inode_lock);
if (atomic_read(&F2FS_I(inode)->dirty_dents)) if (atomic_read(&F2FS_I(inode)->dirty_dents)) {
goto out; spin_unlock(&sbi->dir_inode_lock);
return;
}
list_for_each(this, head) { list_for_each(this, head) {
struct dir_inode_entry *entry; struct dir_inode_entry *entry;
...@@ -516,7 +518,6 @@ void remove_dirty_dir_inode(struct inode *inode) ...@@ -516,7 +518,6 @@ void remove_dirty_dir_inode(struct inode *inode)
break; break;
} }
} }
out:
spin_unlock(&sbi->dir_inode_lock); spin_unlock(&sbi->dir_inode_lock);
/* Only from the recovery routine */ /* Only from the recovery routine */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment