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>
        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;
 }