f2fs: clear FI_INC_LINK during the recovery
authorJaegeuk Kim <jaegeuk@kernel.org>
Fri, 8 Aug 2014 00:06:18 +0000 (17:06 -0700)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 19 Aug 2014 17:01:34 +0000 (10:01 -0700)
If an inode are fsynced multiple times with fsync & dent marks, this inode will
set FI_INC_LINK at find_fsync_dnodes during the recovery.
But, in recover_inode, recover_dentry doesn't clear that flag when multiple hits
were occurred.

So this patch removes the flag for the further consistency.

Reviewed-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/recovery.c

index fe1c6d921ba2fb535464d031d5822877e6eeccbd..cfb2aa9bfc20ef7d318e89edda9235543af0ef25 100644 (file)
@@ -62,8 +62,10 @@ static int recover_dentry(struct page *ipage, struct inode *inode)
        }
 retry:
        de = f2fs_find_entry(dir, &name, &page);
-       if (de && inode->i_ino == le32_to_cpu(de->ino))
+       if (de && inode->i_ino == le32_to_cpu(de->ino)) {
+               clear_inode_flag(F2FS_I(inode), FI_INC_LINK);
                goto out_unmap_put;
+       }
        if (de) {
                einode = f2fs_iget(inode->i_sb, le32_to_cpu(de->ino));
                if (IS_ERR(einode)) {