|
@@ -8482,14 +8482,6 @@ int btrfs_set_block_group_ro(struct btrfs_root *root,
|
|
|
if (IS_ERR(trans))
|
|
|
return PTR_ERR(trans);
|
|
|
|
|
|
- alloc_flags = update_block_group_flags(root, cache->flags);
|
|
|
- if (alloc_flags != cache->flags) {
|
|
|
- ret = do_chunk_alloc(trans, root, alloc_flags,
|
|
|
- CHUNK_ALLOC_FORCE);
|
|
|
- if (ret < 0)
|
|
|
- goto out;
|
|
|
- }
|
|
|
-
|
|
|
ret = set_block_group_ro(cache, 0);
|
|
|
if (!ret)
|
|
|
goto out;
|
|
@@ -8500,6 +8492,11 @@ int btrfs_set_block_group_ro(struct btrfs_root *root,
|
|
|
goto out;
|
|
|
ret = set_block_group_ro(cache, 0);
|
|
|
out:
|
|
|
+ if (cache->flags & BTRFS_BLOCK_GROUP_SYSTEM) {
|
|
|
+ alloc_flags = update_block_group_flags(root, cache->flags);
|
|
|
+ check_system_chunk(trans, root, alloc_flags);
|
|
|
+ }
|
|
|
+
|
|
|
btrfs_end_transaction(trans, root);
|
|
|
return ret;
|
|
|
}
|