diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2014-08-07 20:06:18 -0400 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2014-08-19 13:01:34 -0400 |
commit | 695facc05a3eaaf434911dc5dbbc3e6c6a4e1862 (patch) | |
tree | 3489cea28078600e87ed1223e60e1a3bb5ffe1fe /fs/f2fs | |
parent | 617deb8c053aeec06c7aa16ac7225f046fab95e8 (diff) |
f2fs: clear FI_INC_LINK during the recovery
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>
Diffstat (limited to 'fs/f2fs')
-rw-r--r-- | fs/f2fs/recovery.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/f2fs/recovery.c b/fs/f2fs/recovery.c index fe1c6d921ba2..cfb2aa9bfc20 100644 --- a/fs/f2fs/recovery.c +++ b/fs/f2fs/recovery.c | |||
@@ -62,8 +62,10 @@ static int recover_dentry(struct page *ipage, struct inode *inode) | |||
62 | } | 62 | } |
63 | retry: | 63 | retry: |
64 | de = f2fs_find_entry(dir, &name, &page); | 64 | de = f2fs_find_entry(dir, &name, &page); |
65 | if (de && inode->i_ino == le32_to_cpu(de->ino)) | 65 | if (de && inode->i_ino == le32_to_cpu(de->ino)) { |
66 | clear_inode_flag(F2FS_I(inode), FI_INC_LINK); | ||
66 | goto out_unmap_put; | 67 | goto out_unmap_put; |
68 | } | ||
67 | if (de) { | 69 | if (de) { |
68 | einode = f2fs_iget(inode->i_sb, le32_to_cpu(de->ino)); | 70 | einode = f2fs_iget(inode->i_sb, le32_to_cpu(de->ino)); |
69 | if (IS_ERR(einode)) { | 71 | if (IS_ERR(einode)) { |