aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/extent-tree.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 857a859948a3..50de1fa6fc9e 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -8482,14 +8482,6 @@ int btrfs_set_block_group_ro(struct btrfs_root *root,
8482 if (IS_ERR(trans)) 8482 if (IS_ERR(trans))
8483 return PTR_ERR(trans); 8483 return PTR_ERR(trans);
8484 8484
8485 alloc_flags = update_block_group_flags(root, cache->flags);
8486 if (alloc_flags != cache->flags) {
8487 ret = do_chunk_alloc(trans, root, alloc_flags,
8488 CHUNK_ALLOC_FORCE);
8489 if (ret < 0)
8490 goto out;
8491 }
8492
8493 ret = set_block_group_ro(cache, 0); 8485 ret = set_block_group_ro(cache, 0);
8494 if (!ret) 8486 if (!ret)
8495 goto out; 8487 goto out;
@@ -8500,6 +8492,11 @@ int btrfs_set_block_group_ro(struct btrfs_root *root,
8500 goto out; 8492 goto out;
8501 ret = set_block_group_ro(cache, 0); 8493 ret = set_block_group_ro(cache, 0);
8502out: 8494out:
8495 if (cache->flags & BTRFS_BLOCK_GROUP_SYSTEM) {
8496 alloc_flags = update_block_group_flags(root, cache->flags);
8497 check_system_chunk(trans, root, alloc_flags);
8498 }
8499
8503 btrfs_end_transaction(trans, root); 8500 btrfs_end_transaction(trans, root);
8504 return ret; 8501 return ret;
8505} 8502}