summaryrefslogtreecommitdiff
path: root/fs/btrfs/volumes.c
diff options
context:
space:
mode:
authorFilipe Manana <fdmanana@suse.com>2026-01-23 09:49:57 +0000
committerDavid Sterba <dsterba@suse.com>2026-02-03 07:56:24 +0100
commit6f926597f9837577f5ada47eaa764fea4a2ca9a3 (patch)
treed8acdc69f059745320d3101a8b55c6c7af5041a6 /fs/btrfs/volumes.c
parent3a1f4264daed4b419c325a7fe35e756cada3cf82 (diff)
btrfs: abort transaction on error in btrfs_remove_block_group()
When btrfs_remove_block_group() fails we abort the transaction in its single caller (btrfs_remove_chunk()). This makes it harder to find out where exactly the failure happened, as several steps inside btrfs_remove_block_group() can fail. So make btrfs_remove_block_group() abort the transaction whenever an error happens, instead of aborting in its caller. Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Filipe Manana <fdmanana@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/volumes.c')
-rw-r--r--fs/btrfs/volumes.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index cff2412bc879..d33780082b8d 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -3384,11 +3384,10 @@ int btrfs_remove_chunk(struct btrfs_trans_handle *trans, u64 chunk_offset)
*/
btrfs_trans_release_chunk_metadata(trans);
+ /* On error, btrfs_remove_block_group() aborts the transaction. */
ret = btrfs_remove_block_group(trans, map);
- if (unlikely(ret)) {
- btrfs_abort_transaction(trans, ret);
- goto out;
- }
+ if (unlikely(ret))
+ ASSERT(BTRFS_FS_ERROR(fs_info) != 0);
out:
if (trans->removing_chunk) {