Commit e36902d4 authored by Wang Shilong's avatar Wang Shilong Committed by Josef Bacik

Btrfs: do not continue if out of memory happens

If out of memory happens, we should return -ENOMEM directly to the caller
rather than continue the work.
Signed-off-by: default avatarWang Shilong <wangsl-fnst@cn.fujitsu.com>
Signed-off-by: default avatarJosef Bacik <jbacik@fusionio.com>
parent 9c931c5a
...@@ -352,6 +352,8 @@ static int __resolve_indirect_refs(struct btrfs_fs_info *fs_info, ...@@ -352,6 +352,8 @@ static int __resolve_indirect_refs(struct btrfs_fs_info *fs_info,
err = __resolve_indirect_ref(fs_info, search_commit_root, err = __resolve_indirect_ref(fs_info, search_commit_root,
time_seq, ref, parents, time_seq, ref, parents,
extent_item_pos); extent_item_pos);
if (err == -ENOMEM)
goto out;
if (err) if (err)
continue; continue;
...@@ -367,7 +369,7 @@ static int __resolve_indirect_refs(struct btrfs_fs_info *fs_info, ...@@ -367,7 +369,7 @@ static int __resolve_indirect_refs(struct btrfs_fs_info *fs_info,
new_ref = kmalloc(sizeof(*new_ref), GFP_NOFS); new_ref = kmalloc(sizeof(*new_ref), GFP_NOFS);
if (!new_ref) { if (!new_ref) {
ret = -ENOMEM; ret = -ENOMEM;
break; goto out;
} }
memcpy(new_ref, ref, sizeof(*ref)); memcpy(new_ref, ref, sizeof(*ref));
new_ref->parent = node->val; new_ref->parent = node->val;
...@@ -377,7 +379,7 @@ static int __resolve_indirect_refs(struct btrfs_fs_info *fs_info, ...@@ -377,7 +379,7 @@ static int __resolve_indirect_refs(struct btrfs_fs_info *fs_info,
} }
ulist_reinit(parents); ulist_reinit(parents);
} }
out:
ulist_free(parents); ulist_free(parents);
return ret; return ret;
} }
......
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