@@ -7339,7 +7339,7 @@ int btrfs_free_block_groups(struct btrfs
int btrfs_read_block_groups(struct btrfs_root *root)
{
struct btrfs_path *path;
- int ret;
+ int ret, found = 0;
struct btrfs_block_group_cache *cache;
struct btrfs_fs_info *info = root->fs_info;
struct btrfs_space_info *space_info;
@@ -7357,12 +7357,13 @@ int btrfs_read_block_groups(struct btrfs
while (1) {
ret = find_first_block_group(root, path, &key);
- if (ret > 0) {
+ if (ret > 0 || (found && ret == -ENOENT)) {
ret = 0;
- goto error;
+ break;
}
+
if (ret != 0)
- goto error;
+ break;
leaf = path->nodes[0];
btrfs_item_key_to_cpu(leaf, &found_key, path->slots[0]);
@@ -7439,9 +7440,8 @@ int btrfs_read_block_groups(struct btrfs
set_avail_alloc_bits(root->fs_info, cache->flags);
if (btrfs_chunk_readonly(root, cache->key.objectid))
set_block_group_readonly(cache);
+ found = 1;
}
- ret = 0;
-error:
btrfs_free_path(path);
return ret;
}