btrfs_update_reloc_root will will return errors in the future, so handle
the error properly in insert_dirty_subvol.

Signed-off-by: Josef Bacik <jo...@toxicpanda.com>
---
 fs/btrfs/relocation.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index 2187015fc412..e6f9304d6a29 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -1570,6 +1570,7 @@ static int insert_dirty_subvol(struct btrfs_trans_handle 
*trans,
 {
        struct btrfs_root *reloc_root = root->reloc_root;
        struct btrfs_root_item *reloc_root_item;
+       int ret;
 
        /* @root must be a subvolume tree root with a valid reloc tree */
        ASSERT(root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID);
@@ -1580,7 +1581,9 @@ static int insert_dirty_subvol(struct btrfs_trans_handle 
*trans,
                sizeof(reloc_root_item->drop_progress));
        btrfs_set_root_drop_level(reloc_root_item, 0);
        btrfs_set_root_refs(reloc_root_item, 0);
-       btrfs_update_reloc_root(trans, root);
+       ret = btrfs_update_reloc_root(trans, root);
+       if (ret)
+               return ret;
 
        if (list_empty(&root->reloc_dirty_list)) {
                btrfs_grab_root(root);
-- 
2.26.2

Reply via email to