f2fs: fix error path in do_recover_data()
- don't panic kernel if f2fs_get_node_page() fails in f2fs_recover_inline_data() or f2fs_recover_inline_xattr(); - return error number of f2fs_truncate_blocks() to f2fs_recover_inline_data()'s caller; Signed-off-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
@@ -544,7 +544,9 @@ static int do_recover_data(struct f2fs_sb_info *sbi, struct inode *inode,
|
||||
|
||||
/* step 1: recover xattr */
|
||||
if (IS_INODE(page)) {
|
||||
f2fs_recover_inline_xattr(inode, page);
|
||||
err = f2fs_recover_inline_xattr(inode, page);
|
||||
if (err)
|
||||
goto out;
|
||||
} else if (f2fs_has_xattr_block(ofs_of_node(page))) {
|
||||
err = f2fs_recover_xattr_data(inode, page);
|
||||
if (!err)
|
||||
@@ -553,8 +555,12 @@ static int do_recover_data(struct f2fs_sb_info *sbi, struct inode *inode,
|
||||
}
|
||||
|
||||
/* step 2: recover inline data */
|
||||
if (f2fs_recover_inline_data(inode, page))
|
||||
err = f2fs_recover_inline_data(inode, page);
|
||||
if (err) {
|
||||
if (err == 1)
|
||||
err = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* step 3: recover data indices */
|
||||
start = f2fs_start_bidx_of_node(ofs_of_node(page), inode);
|
||||
|
Reference in New Issue
Block a user