diff options
author | Johannes Thumshirn <johannes.thumshirn@wdc.com> | 2024-07-09 09:40:34 +0200 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2024-09-10 16:51:12 +0200 |
commit | 7fa5230b46f2c333f090716c52e99a0fbbee5fbd (patch) | |
tree | 0c5339307752d1b3acb317222b81295247a0e10d /fs/btrfs/extent_map.c | |
parent | 8c4cba2adbb0ec63f3833cad7452a431580e9ffa (diff) | |
download | linux-7fa5230b46f2c333f090716c52e99a0fbbee5fbd.tar.gz linux-7fa5230b46f2c333f090716c52e99a0fbbee5fbd.tar.bz2 linux-7fa5230b46f2c333f090716c52e99a0fbbee5fbd.zip |
btrfs: update stripe_extent delete loop assumptions
btrfs_delete_raid_extent() was written under the assumption, that it's
call-chain always passes a start, length tuple that matches a single
extent. But btrfs_delete_raid_extent() is called by
do_free_extent_accounting() which in turn is called by
__btrfs_free_extent().
But this call-chain passes in a start address and a length that can
possibly match multiple on-disk extents.
To make this possible, we have to adjust the start and length of each
btree node lookup, to not delete beyond the requested range.
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/extent_map.c')
0 files changed, 0 insertions, 0 deletions