Commit a678543e authored by Johannes Thumshirn's avatar Johannes Thumshirn Committed by David Sterba
Browse files

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: default avatarFilipe Manana <fdmanana@suse.com>
Signed-off-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 5a0e38ea
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -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;
		}