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: Wang Shilong <wangsl-fnst@cn.fujitsu.com> Signed-off-by: Josef Bacik <jbacik@fusionio.com>
This commit is contained in:
parent
9c931c5ab2
commit
e36902d4cc
|
@ -352,6 +352,8 @@ static int __resolve_indirect_refs(struct btrfs_fs_info *fs_info,
|
|||
err = __resolve_indirect_ref(fs_info, search_commit_root,
|
||||
time_seq, ref, parents,
|
||||
extent_item_pos);
|
||||
if (err == -ENOMEM)
|
||||
goto out;
|
||||
if (err)
|
||||
continue;
|
||||
|
||||
|
@ -367,7 +369,7 @@ static int __resolve_indirect_refs(struct btrfs_fs_info *fs_info,
|
|||
new_ref = kmalloc(sizeof(*new_ref), GFP_NOFS);
|
||||
if (!new_ref) {
|
||||
ret = -ENOMEM;
|
||||
break;
|
||||
goto out;
|
||||
}
|
||||
memcpy(new_ref, ref, sizeof(*ref));
|
||||
new_ref->parent = node->val;
|
||||
|
@ -377,7 +379,7 @@ static int __resolve_indirect_refs(struct btrfs_fs_info *fs_info,
|
|||
}
|
||||
ulist_reinit(parents);
|
||||
}
|
||||
|
||||
out:
|
||||
ulist_free(parents);
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue