Linux block layer
 help / color / mirror / Atom feed
* [GIT PULL] md-7.3-20260809
@ 2026-08-09  7:55 Yu Kuai
  0 siblings, 0 replies; only message in thread
From: Yu Kuai @ 2026-08-09  7:55 UTC (permalink / raw)
  To: Jens Axboe
  Cc: Yu Kuai, linux-raid, linux-block, Abd-Alrhman Masalkhi,
	Bruce Johnston, Chen Cheng, Coly Li, Genjian Zhang,
	Hiroshi Nishida, Martin Wilck, Sajal Gupta, Wale Zhang,
	Yunye Zhao

Hi Jens,

Please consider pulling the following changes into your for-7.3/block
branch.

Special Note:
- Remove incomplete REQ_NOWAIT support from RAID1, RAID10, and
  RAID4/5/6. These personalities can block internally, so a write can
  reach one member before another returns -EAGAIN. MD cannot distinguish
  queue pressure from a device failure or safely retry the partially
  completed write, which can leave mirrors with divergent data. Keeping
  REQ_NOWAIT advertised for these personalities is therefore unsafe.

  Returning -EAGAIN after one member rejects the bio still exposes any
  writes already submitted to other members. Retrying the whole write
  without REQ_NOWAIT would violate the caller's non-blocking request and
  cannot undo member writes that already completed. Treating -EAGAIN as
  a device failure would incorrectly fault healthy devices under
  transient queue pressure. Prechecking every member queue is also not
  sufficient because it cannot reserve capacity, so a later submission
  can still block or fail.

  A coordinated all-member submission and retry model would require a
  larger redesign. Until that exists, not advertising REQ_NOWAIT for
  these personalities is the only safe behavior.
  (Abd-Alrhman Masalkhi)

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)

Thanks,
Kuai

---

The following changes since commit f5098b6bae761e346ebcd9da7f95622c04733cff:

  Linux 7.2-rc5 (2026-07-26 14:45:48 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/mdraid/linux.git tags/md-7.3-20260809

for you to fetch changes up to dc386aa0ac0a3ec06c9a3ea9b064b073fb72a916:

  md/raid1: don't set array_frozen in raid1_takeover() (2026-08-07 16:49:22 +0800)

----------------------------------------------------------------
Abd-Alrhman Masalkhi (5):
      md: remove REQ_NOWAIT support from raid1/10/456
      md: recheck spare changes before starting sync
      md/raid1: restrict atomic write limits and handle runtime constraints
      md/raid10: consistently fail atomic writes that require splitting
      md/raid10: remove unnecessary barrier around bio_submit_split_bioset()

Bruce Johnston (1):
      md/raid1: don't set array_frozen in raid1_takeover()

Chen Cheng (10):
      md/raid5: protect bitmap batch counters aka seq_flush/seq_write consistency
      md/raid1: protect sequential read hints for read balance
      md/raid5: fix lockless max_nr_stripes reads
      md/raid5: fix reshape deadlock while failed devices more than max degraded
      md/raid5: protect lockless recovery_offset accesses during reshape
      md: suspend array when sync_action=reshape
      md/raid10: resize r10bio_pool for reshape
      md/raid10: free r10bio before ending master_bio in raid_end_bio_io() and raid_end_discard_bio()
      md/bitmap: resume array on backlog_store() error path
      md: scope memalloc_noio to allocation critical sections

Coly Li (1):
      md: do overflow check for sb->bblog_shift in super_1_load()

Genjian Zhang (1):
      md/raid5: complete discard bios while reshape is active

Hiroshi Nishida (1):
      md: widen badblock sectors param from int to sector_t

Martin Wilck (1):
      md/raid1: create serial pool adding rdev to array with serialize_policy=1

Sajal Gupta (1):
      md/raid5-ppl: fix use-after-free in ppl_do_flush()

Wale Zhang (1):
      md: skip discard on unsupported member devices

Yu Kuai (29):
      md/md-llbitmap: clear flush state after daemon flush
      md/md-llbitmap: use GFP_NOIO for cache allocations
      md/md-llbitmap: only end fully synced chunks
      md/raid5: reject zero-sector reshape chunks
      md/raid5: round bitmap stripes with sector division
      md: wait for behind writes before destroying bitmap
      md: avoid stale clone I/O accounting timestamps
      md/md-llbitmap: prevent create failure bitmap UAF
      md/md-llbitmap: stop daemon timer rearm on destroy
      md: skip bitmap accounting for empty write ranges
      md: add helper to split bios at reshape offset
      md: add exact bitmap mapping and reshape hooks
      md/md-llbitmap: track bitmap sync_size explicitly
      md/md-llbitmap: allocate page controls independently
      md/md-llbitmap: grow the page cache in place for reshape
      md/md-llbitmap: track target reshape geometry fields
      md/md-llbitmap: finish reshape geometry
      md/md-llbitmap: refuse reshape while llbitmap still needs sync
      md/md-llbitmap: add reshape range mapping helpers
      md/md-llbitmap: don't skip reshape ranges from bitmap state
      md/md-llbitmap: remap checkpointed bits as reshape progresses
      md/md-llbitmap: clamp state-machine walks to tracked bits
      md/raid10: reject llbitmap reshape when md chunk shrinks
      md/raid10: wire llbitmap reshape lifecycle
      md/raid10: split reshape bios before bitmap accounting
      md/raid5: add exact old and new llbitmap mapping helpers
      md/raid5: reject llbitmap reshape when md chunk shrinks
      md/raid5: wire llbitmap reshape lifecycle
      md/raid5: split reshape bios before bitmap accounting

Yunye Zhao (2):
      md/raid10: fix still_degraded being inverted in raid10_sync_request()
      md: add cond_resched() to md_do_sync()'s skip path

 drivers/md/md-bitmap.c   |  22 +-
 drivers/md/md-bitmap.h   |  12 +-
 drivers/md/md-linear.c   |   1 +
 drivers/md/md-llbitmap.c | 752 ++++++++++++++++++++++++++++++++++++++++++-----
 drivers/md/md.c          | 178 ++++++++---
 drivers/md/md.h          |  15 +-
 drivers/md/raid0.c       |   1 +
 drivers/md/raid1-10.c    |   8 +-
 drivers/md/raid1.c       | 139 +++------
 drivers/md/raid10.c      | 227 +++++++-------
 drivers/md/raid10.h      |   2 +-
 drivers/md/raid5-ppl.c   |   4 +-
 drivers/md/raid5.c       | 318 +++++++++++++++-----
 13 files changed, 1278 insertions(+), 401 deletions(-)

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-08-09  7:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-09  7:55 [GIT PULL] md-7.3-20260809 Yu Kuai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox