[PATCH v2 0/4] btrfs: zoned: btree inode writeback fixes

Johannes Thumshirn <[email protected]> Thu, 23 Jul 2026 17:54:24 +0200
Newsgroups org.kernel.vger.linux-btrfs
Message-ID <[email protected]>
Here's another attempt in fixing the problems with writeback of the
btree inode on zoned filesystems.

The symptoms we're seeing with it are:
- Hang on unmount because btree inode folios can't get written back
  on the final iput() because the block-groups are already gone.
- The recently added WARN() in invalidate_and_check_btree_folios()
  firing
- The ASSERT(btrfs_header_bytenr()) in btrfs_free_tree_block() firing.

Changes to v1:
- Reword changelog in 1/4
- Move per-eb write into helper function
- Call brtfs_schedule_zone_finish_bg() from flush
- Skip flush on -EBUSY
- Only drop ebs tagged as EXTENT_BUFFER_ZONED_ZEROOUT in
  btrfs_zoned_release_dirty_metadata() so
  invalidate_and_check_btree_folios() still catches legitimate unwritten
  folios

Link to v1:
https://lore.kernel.org/linux-btrfs/[email protected]/

Johannes Thumshirn (4):
  btrfs: zoned: flush active metadata block group at btree_writepages()
    start
  btrfs: zoned: drop stranded dirty metadata on transaction abort
  btrfs: zoned: drop stranded dirty metadata buffers at unmount
  btrfs: zoned: don't clobber the extent buffer when zeroing it out

 fs/btrfs/disk-io.c   |  21 +++--
 fs/btrfs/extent_io.c | 218 ++++++++++++++++++++++++++++++++++---------
 fs/btrfs/extent_io.h |   1 +
 3 files changed, 190 insertions(+), 50 deletions(-)

-- 
2.55.0