diff options
author | Chris Fries <C.Fries@motorola.com> | 2013-05-02 17:09:05 -0400 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk.kim@samsung.com> | 2013-05-08 06:54:20 -0400 |
commit | 047184b42b52376f4066f9ab357c0a61a12f116e (patch) | |
tree | d00a81f57a7907527b2d3f45d69a290c07a290fb | |
parent | bde582b225e98fe9e35cd67e4cb4406a6f85ae3e (diff) |
f2fs: recover when journal contains deleted files
When recovering a journal file with fsync data for files that have
been deleted, don't bail out on recovery.
Signed-off-by: Chris Fries <C.Fries@motorola.com>
Reviewed-by: Russell Knize <rknize2@motorola.com>
Reviewed-by: Jason Hrycay <jason.hrycay@motorola.com>
[Jaegeuk Kim: fit the coding style]
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
-rw-r--r-- | fs/f2fs/recovery.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/f2fs/recovery.c b/fs/f2fs/recovery.c index f16d12df8e99..60c8a5097058 100644 --- a/fs/f2fs/recovery.c +++ b/fs/f2fs/recovery.c | |||
@@ -53,7 +53,7 @@ static int recover_dentry(struct page *ipage, struct inode *inode) | |||
53 | 53 | ||
54 | dir = f2fs_iget(inode->i_sb, le32_to_cpu(raw_inode->i_pino)); | 54 | dir = f2fs_iget(inode->i_sb, le32_to_cpu(raw_inode->i_pino)); |
55 | if (IS_ERR(dir)) { | 55 | if (IS_ERR(dir)) { |
56 | err = -EINVAL; | 56 | err = PTR_ERR(dir); |
57 | goto out; | 57 | goto out; |
58 | } | 58 | } |
59 | 59 | ||
@@ -156,8 +156,12 @@ static int find_fsync_dnodes(struct f2fs_sb_info *sbi, struct list_head *head) | |||
156 | } | 156 | } |
157 | if (IS_INODE(page)) { | 157 | if (IS_INODE(page)) { |
158 | err = recover_inode(entry->inode, page); | 158 | err = recover_inode(entry->inode, page); |
159 | if (err) | 159 | if (err == -ENOENT) { |
160 | goto next; | ||
161 | } else if (err) { | ||
162 | err = -EINVAL; | ||
160 | goto unlock_out; | 163 | goto unlock_out; |
164 | } | ||
161 | } | 165 | } |
162 | next: | 166 | next: |
163 | /* check next segment */ | 167 | /* check next segment */ |