All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yingjie Wang <x-professor@outlook.com>
To: Song Liu <song@kernel.org>
Cc: Yu Kuai <yukuai@fygo.io>, Li Nan <magiclinan@didiglobal.com>,
	Xiao Ni <xiao@kernel.org>,
	Artur Paszkiewicz <artur.paszkiewicz@intel.com>,
	"linux-raid@vger.kernel.org" <linux-raid@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: [PATCH v2 0/2] md/raid5: fix PPL disk add and replacement removal
Date: Sun, 15 Nov 2026 07:39:39 +0000	[thread overview]
Message-ID: <cover.1794555233.git.x-professor@outlook.com> (raw)

This is v2 of the two independent PPL disk-transition fixes. The first
patch is unchanged. The second patch also handles a slot that remains
assigned above the current array width after a RAID5 shrink.

When a newly added disk fails PPL setup, raid5_add_disk() can publish the
private disk pointer before the caller rolls back raid_disk. A later
removal can then free the disk while RAID5 still references it. Patch 1
prepares the PPL log before publishing the pointer and restores the
previous state on failure.

Patch 2 keeps the active PPL log attached when an unpromoted replacement
is removed. It also skips log_modify() when removing an active device from
a slot at or above the current raid_disks value. Such a slot has no PPL
child log after a shrink, but its device pointer still has to be cleared.

Changes in v2:

  * guard the active-device log update with number < conf->raid_disks;
  * add a shrink test that leaves an extra slot blocked, enables PPL, and
    compares the v1 and v2 removal results.

The v1 public thread is:
https://lore.kernel.org/r/cover.1794215128.git.x-professor@outlook.com/

Tested on x86_64 with KASAN, PROVE_LOCKING, DEBUG_ATOMIC_SLEEP, LOCKDEP,
MD, and RAID456 enabled:

  * per-commit W=1 builds for both commits;
  * failed PPL disk addition, which reaches DONE on the v2 tip;
  * unpromoted replacement removal, which reaches PASS and DONE on the
    v2 tip, with tracing observing `ppl_write_stripe()` and a successful
    return during a subsequent array write;
  * the shrink comparison, where the sent v1 remains at slot 3 after
    three remove attempts while v2 removes the slot on the first attempt;
  * empty-header `-EIO` injection while adding a spare, where `slot=0`
    returns an error, leaves the slot unassigned, restores `ppl_size`, and
    leaves the degraded array writable.

The runtime tests use native metadata 1.2. IMSM external metadata was not
run. The empty-header failure uses a dedicated kernel with
`CONFIG_FAIL_MAKE_REQUEST` enabled; the separate page-allocation `-ENOMEM`
injection was not run.

Yingjie Wang (2):
  md/raid5: roll back failed PPL disk additions
  md/raid5: preserve active PPL log when removing a replacement

 drivers/md/raid5-ppl.c | 11 ++++++++++-
 drivers/md/raid5.c     | 13 +++++++++----
 2 files changed, 19 insertions(+), 5 deletions(-)


base-commit: 47e1b18f38d74015cb9fd30b5ff2a1eb88e77d31
-- 
2.43.0


             reply	other threads:[~2026-11-15  7:41 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-15  7:39 Yingjie Wang [this message]
2026-11-15  7:39 ` [PATCH v2 1/2] md/raid5: roll back failed PPL disk additions Yingjie Wang
2026-11-15  7:40 ` [PATCH v2 2/2] md/raid5: preserve active PPL log when removing a replacement Yingjie Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1794555233.git.x-professor@outlook.com \
    --to=x-professor@outlook.com \
    --cc=artur.paszkiewicz@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-raid@vger.kernel.org \
    --cc=magiclinan@didiglobal.com \
    --cc=song@kernel.org \
    --cc=xiao@kernel.org \
    --cc=yukuai@fygo.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.