Message ID | 20250113-rst-delete-fixes-v4-0-c00c61d2b126@kernel.org (mailing list archive) |
---|---|
Headers | show |
Series | btrfs: more RST delete fixes | expand |
On Mon, Jan 13, 2025 at 08:31:41PM +0100, Johannes Thumshirn wrote: > Here's another set of fixes for the delete path on RAID stripe-tree backed > filesystems. > > Josef's CI system started tripping over a bad key order due to the usage > of btrfs_set_item_key_safe() in btrfs_partially_delete_raid_extent() and > while investigating what is happening there I found more bugs and not > handled corner cases, which resulted in more fixes and test-cases. > > Unfortunately I couldn't fix the bad key order problem and had to resort > to re-creating the item in btrfs_partially_delete_raid_extent() and insert > the new one after deleting the old. > > Fstests btrfs/06* are extremely good in exhibiting these failures and > btrfs/060 has been extensively run while developing this series. > > A full CI run of v1 can be found here: > https://github.com/btrfs/linux/actions/runs/12291668397 > > Changes to v1: > - Handle extent_map lookup failure in 1/14 > - Don't use key.offset = -1 for initial search in 3/14 > - Don't break before calling btrfs_previous_item if we're on slot 0 in > 6/14 > - Remove btrfs_mark_buffer_dirty calls > - Remove line breaks at 80 chars if we're just a bit over > - Fix multiple issues on comment styling > > Link to v1: > https://lore.kernel.org/linux-btrfs/cover.1733989299.git.jth@kernel.org > > Note: > I did not copy the implementation of btrfs_drop_extents() as I'd like to > have feedback on this variant first, before putting the time and energy in > a "completely new" implementation. > > --- > Changes in v4: > - Handle case when btrfs_previous_item returns 1 > - Explicitly document that the root cause of the tree corruption is > unclear > - Link to v3: https://lore.kernel.org/r/20250109-rst-delete-fixes-v3-0-b5c73a4b2a80@kernel.org I've added the series to for-next, with some minor fixups.