btrfs: fix the btrfs_get_global_root return value
authorChristoph Hellwig <hch@lst.de>
Tue, 23 May 2023 08:40:18 +0000 (10:40 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Jun 2023 11:59:29 +0000 (13:59 +0200)
btrfs_grab_root returns either the root or NULL, and the callers of
btrfs_get_global_root expect it to return the same.  But all the more
recently added roots instead return an ERR_PTR, so fix this.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/disk-io.c

index 6e0d4f9..4d34799 100644 (file)
@@ -1183,19 +1183,13 @@ static struct btrfs_root *btrfs_get_global_root(struct btrfs_fs_info *fs_info,
        if (objectid == BTRFS_CSUM_TREE_OBJECTID)
                return btrfs_grab_root(btrfs_global_root(fs_info, &key));
        if (objectid == BTRFS_QUOTA_TREE_OBJECTID)
-               return btrfs_grab_root(fs_info->quota_root) ?
-                       fs_info->quota_root : ERR_PTR(-ENOENT);
+               return btrfs_grab_root(fs_info->quota_root);
        if (objectid == BTRFS_UUID_TREE_OBJECTID)
-               return btrfs_grab_root(fs_info->uuid_root) ?
-                       fs_info->uuid_root : ERR_PTR(-ENOENT);
+               return btrfs_grab_root(fs_info->uuid_root);
        if (objectid == BTRFS_BLOCK_GROUP_TREE_OBJECTID)
-               return btrfs_grab_root(fs_info->block_group_root) ?
-                       fs_info->block_group_root : ERR_PTR(-ENOENT);
-       if (objectid == BTRFS_FREE_SPACE_TREE_OBJECTID) {
-               struct btrfs_root *root = btrfs_global_root(fs_info, &key);
-
-               return btrfs_grab_root(root) ? root : ERR_PTR(-ENOENT);
-       }
+               return btrfs_grab_root(fs_info->block_group_root);
+       if (objectid == BTRFS_FREE_SPACE_TREE_OBJECTID)
+               return btrfs_grab_root(btrfs_global_root(fs_info, &key));
        return NULL;
 }