* [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