Merge tag 'md-7.3-20260809' of https://git.kernel.org/pub/scm/linux/kernel/git/mdraid/linux into for-7.3/block

Pull MD updates from Yu Kuai:

"This pull request contains:

 Bug Fixes:
 - Protect RAID5 bitmap batching, stripe-cache limits, and reshape
   recovery state; avoid failed-device reshape deadlocks, discard hangs,
   and PPL use-after-free. (Chen Cheng, Genjian Zhang, Sajal Gupta)
 - Recheck spare changes under array suspension before sync to avoid
   racing device removal. (Abd-Alrhman Masalkhi)
 - Fix RAID1 atomic-write constraints, serialized-device setup, and
   takeover I/O freezes. (Abd-Alrhman Masalkhi, Martin Wilck,
   Bruce Johnston)
 - Fix RAID10 atomic-write failure handling and reshape pool/bio
   lifetime bugs. (Abd-Alrhman Masalkhi, Chen Cheng)
- Fix bitmap error recovery, flush/sync accounting, reclaim safety,
   teardown, timer, use-after-free, and empty-range bugs, plus stale
   clone I/O accounting. (Chen Cheng, Yu Kuai)
 - Reject zero-sector RAID5 reshape chunks and correctly round bitmap
   ranges for non-power-of-two stripe widths. (Yu Kuai)
 - Prevent PF_MEMALLOC_NOIO state from leaking across tasks.
   (Chen Cheng)
 - Validate bad-block-log shift bounds and skip discard on unsupported
   member devices. (Coly Li, Wale Zhang)
 - Prevent RAID10 recovery corruption and large-array resync soft
   lockups. (Yunye Zhao)

 Improvements:
 - Add lockless bitmap reshape support for RAID5 and RAID10, including
   exact old/new mapping, cache growth, geometry lifecycle, checkpoint
   remapping, and bio splitting. (Yu Kuai)

 Cleanups:
 - Make RAID1 sequential-read hint accesses explicit to suppress false
   KCSAN reports. (Chen Cheng)
 - Remove redundant RAID10 barrier handling and align badblock range
   types. (Abd-Alrhman Masalkhi, Hiroshi Nishida)"

* tag 'md-7.3-20260809' of https://git.kernel.org/pub/scm/linux/kernel/git/mdraid/linux: (53 commits)
  md/raid1: don't set array_frozen in raid1_takeover()
  md: skip discard on unsupported member devices
  md: add cond_resched() to md_do_sync()'s skip path
  md/raid10: fix still_degraded being inverted in raid10_sync_request()
  md/raid5: split reshape bios before bitmap accounting
  md/raid5: wire llbitmap reshape lifecycle
  md/raid5: reject llbitmap reshape when md chunk shrinks
  md/raid5: add exact old and new llbitmap mapping helpers
  md/raid10: split reshape bios before bitmap accounting
  md/raid10: wire llbitmap reshape lifecycle
  md/raid10: reject llbitmap reshape when md chunk shrinks
  md/md-llbitmap: clamp state-machine walks to tracked bits
  md/md-llbitmap: remap checkpointed bits as reshape progresses
  md/md-llbitmap: don't skip reshape ranges from bitmap state
  md/md-llbitmap: add reshape range mapping helpers
  md/md-llbitmap: refuse reshape while llbitmap still needs sync
  md/md-llbitmap: finish reshape geometry
  md/md-llbitmap: track target reshape geometry fields
  md/md-llbitmap: grow the page cache in place for reshape
  md/md-llbitmap: allocate page controls independently
  ...
This commit is contained in:
Jens Axboe 2026-08-15 17:37:12 -06:00
commit 069f4aad34
13 changed files with 1278 additions and 401 deletions