[PATCH v3 0/3] btrfs: more RAID stripe tree updates
From: Johannes Thumshirn
Date: Fri Jul 12 2024 - 03:48:56 EST
Three further RST updates targeted for 6.11 (hopefully).
The first one is a reworked version of the scrub vs dev-replace deadlock
fix. It does have reviews from Josef and Qu but I'd love to head Filipe's
take on it.
The second one updates a stripe extent in case a write to a already
present logical address happens.
The third one correects assumptions in the delete code. My assumption was
that we are deleting a single stripe extent on each call to
btrfs_delete_stripe_extent(). But do_free_extent_accounting() passes in a
start address and range of bytes that is deleted, so we need to keep track
of how many bytes we already have deleted and update the loop accordingly.
NOTE:
The next big bug in RST is related to relocation. When relocation is
reading from disk (via relocate_file_extent_cluster() ->
page_cache_ra_unbounded()) we're trying to lookup logical addresses that
for some reason RST does not know about and this leads to a tree dump and
ultimately a panic afterwards.
---
Changes in v3:
- Add Qu's Reviewed-by on patch 3
- Change patch 2 to using write_extent_buffer() (and drop Qu's R-b again)
- Link to v2: https://lore.kernel.org/r/20240711-b4-rst-updates-v2-0-d7b8113d88b7@xxxxxxxxxx
Changes in v2:
- Add Qu's Reviewed-by on patch 2
- Add patch 3
- Link to v1: https://lore.kernel.org/r/20240709-b4-rst-updates-v1-0-200800dfe0fd@xxxxxxxxxx
---
Johannes Thumshirn (3):
btrfs: don't hold dev_replace rwsem over whole of btrfs_map_block
btrfs: replace stripe extents
btrfs: update stripe_extent delete loop assumptions
fs/btrfs/raid-stripe-tree.c | 38 ++++++++++++++++++++++++++++++++++++++
fs/btrfs/volumes.c | 28 +++++++++++++++++-----------
2 files changed, 55 insertions(+), 11 deletions(-)
---
base-commit: 584df860cac6e35e364ada101ccd13495b954644
change-id: 20240709-b4-rst-updates-bb9c0e49cd5b
Best regards,
--
Johannes Thumshirn <jth@xxxxxxxxxx>