From: Johannes Thumshirn Date: Mon, 13 Jan 2025 19:31:45 +0000 (+0100) Subject: btrfs: fix front delete range calculation for RAID stripe extents X-Git-Tag: v6.14-rc1~207^2~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a678543e609dfb145f0498f895bee05bbc7994a5;p=thirdparty%2Fkernel%2Flinux.git btrfs: fix front delete range calculation for RAID stripe extents When deleting the front of a RAID stripe-extent the delete code miscalculates the size on how much to pad the remaining extent part in the front. Fix the calculation so we're always having the sizes we expect. Reviewed-by: Filipe Manana Signed-off-by: Johannes Thumshirn Signed-off-by: David Sterba --- diff --git a/fs/btrfs/raid-stripe-tree.c b/fs/btrfs/raid-stripe-tree.c index 0c351eda3551e..9e559ad48810b 100644 --- a/fs/btrfs/raid-stripe-tree.c +++ b/fs/btrfs/raid-stripe-tree.c @@ -136,10 +136,12 @@ int btrfs_delete_raid_extent(struct btrfs_trans_handle *trans, u64 start, u64 le * length to the new size and then re-insert the item. */ if (found_end > end) { - u64 diff = found_end - end; + u64 diff_end = found_end - end; btrfs_partially_delete_raid_extent(trans, path, &key, - diff, diff); + key.offset - length, + length); + ASSERT(key.offset - diff_end == length); break; }