From: Benjamin Marzinski <bmarzins@redhat.com>
To: Brian Bunker <brian@purestorage.com>
Cc: dm-devel@lists.linux.dev, Martin Wilck <mwilck@suse.com>,
Christophe Varoqui <christophe.varoqui@opensvc.com>
Subject: Re: [PATCH v2 1/1] multipathd: verify udev WWIDs with the device before moving paths
Date: Fri, 30 Oct 2026 14:09:42 -0400 [thread overview]
Message-ID: <auTdZn84HV8DjGZ0@redhat.com> (raw)
In-Reply-To: <20261029235241.97614-2-brian@purestorage.com>
On Thu, Oct 29, 2026 at 04:52:41PM -0700, Brian Bunker wrote:
> multipathd takes a path's WWID from udev. When a change uevent reports
> a different WWID, uev_update_path() removes the path from its map and
> re-adds it through uev_add_path(), which places it in whatever map owns
> the new WWID. Nothing checks the new value against the device itself;
> recheck_wwid only covers paths coming back up in the checker and
> "multipathd add path". If udev reports the wrong WWID, or the uevent is
> stale by the time it is processed, the path goes into the map of a
> different LUN and I/O for one LUN is silently sent to another.
>
> Use SG_IO to read VPD page 0x83 from the device in two places, for
> paths where can_recheck_wwid() is true:
>
> - In uev_update_path(), if the device still reports the cached WWID,
> ignore the udev value and leave the path where it is.
>
> - In ev_add_path(), when a path is being re-added because its udev
> data was missing or changed, refuse to add it if the device doesn't
> confirm its WWID. The path is orphaned, its WWID is cleared and it
> is marked INIT_MISSING_UDEV, so the checker retriggers udev (bounded
> by retrigger_tries) and the path is re-added from fresh data.
>
> To tell re-adds from ordinary adds, turn the need_do_map argument of
> uev_add_path() and ev_add_path() into enum path_add_mode, with a new
> PATH_ADD_REINIT value that behaves like PATH_ADD_MAP and also requests
> the WWID check. Ordinary adds are unchanged and never read the WWID
> from the device.
>
> If the SG_IO read fails, behavior is unchanged.
>
> Split the SG_IO read out of check_path_wwid_change() into
> get_sgio_wwid() so all the checks share it.
>
> Signed-off-by: Brian Bunker <brian@purestorage.com>
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
next prev parent reply other threads:[~2026-10-30 18:09 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-29 23:52 [PATCH v2 0/1] multipathd: verify udev WWIDs with the device before moving paths Brian Bunker
2026-10-29 23:52 ` [PATCH v2 1/1] " Brian Bunker
2026-10-30 18:09 ` Benjamin Marzinski [this message]
2026-11-06 22:19 ` Martin Wilck
2026-11-09 18:57 ` Brian Bunker
2026-11-09 20:26 ` Benjamin Marzinski
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=auTdZn84HV8DjGZ0@redhat.com \
--to=bmarzins@redhat.com \
--cc=brian@purestorage.com \
--cc=christophe.varoqui@opensvc.com \
--cc=dm-devel@lists.linux.dev \
--cc=mwilck@suse.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox