mirror of https://gitee.com/openkylin/linux.git
btrfs: have proper error handling in btrfs_init_reloc_root
create_reloc_root will return errors in the future, and __add_reloc_root can return ENOMEM or EEXIST, so handle these errors properly. Signed-off-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: David Sterba <dsterba@suse.com> [ add comment ] Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
03a7e111a9
commit
00bb36a0e7
|
@ -856,9 +856,15 @@ int btrfs_init_reloc_root(struct btrfs_trans_handle *trans,
|
|||
reloc_root = create_reloc_root(trans, root, root->root_key.objectid);
|
||||
if (clear_rsv)
|
||||
trans->block_rsv = rsv;
|
||||
if (IS_ERR(reloc_root))
|
||||
return PTR_ERR(reloc_root);
|
||||
|
||||
ret = __add_reloc_root(reloc_root);
|
||||
BUG_ON(ret < 0);
|
||||
if (ret) {
|
||||
/* Pairs with create_reloc_root */
|
||||
btrfs_put_root(reloc_root);
|
||||
return ret;
|
||||
}
|
||||
root->reloc_root = btrfs_grab_root(reloc_root);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue