public inbox for dm-devel@redhat.com
 help / color / mirror / Atom feed
* [PATCH 0/1] checkers: add alua path checker
@ 2026-03-12  0:16 Brian Bunker
  2026-03-12  0:16 ` [PATCH 1/1] " Brian Bunker
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Brian Bunker @ 2026-03-12  0:16 UTC (permalink / raw)
  To: bmarzins, mwilck, dm-devel; +Cc: Brian Bunker

For ALUA-capable storage arrays, multipath-tools currently uses TUR
(Test Unit Ready) as the default path checker while a separate
prioritizer determines ALUA state. When sysfs provides ALUA state
(the common case), no RTPG command is needed for priority. However,
if sysfs is unavailable or detect_prio is off, the prioritizer issues
RTPG, resulting in two SCSI commands per path check cycle: TUR + RTPG.

This patch introduces an 'alua' path checker that uses RTPG as the path
check command, providing two benefits:

1. For configurations where RTPG is needed for priority, this eliminates
   duplicate I/O by combining path checking and ALUA state retrieval
   into a single RTPG command.

2. RTPG provides richer path state information than TUR:
   * TRANSITIONING state detected and mapped to PATH_PENDING,
     preventing false all paths down during controller failover
   * STANDBY state detected and mapped to PATH_GHOST
   * UNAVAILABLE/OFFLINE states properly distinguished

The richer state information is valuable even when sysfs is available,
as TUR cannot distinguish between these ALUA-specific conditions.

This design intentionally couples the checker and prioritizer: the
alua_cached prioritizer consumes state cached by the alua checker.
While this blurs the traditional separation between these components,
for ALUA the path state and priority fundamentally derive from the
same underlying data, making the coupling a natural fit.

This patch sets the alua checker as the auto-detected default for ALUA
devices to demonstrate its benefits. We recognize that adopting a new
default checker requires careful consideration; the auto-detection can
be adjusted or removed based on review feedback.

Brian Bunker (1):
  checkers: add alua path checker

 libmultipath/Makefile                   |   5 +
 libmultipath/checkers.c                 |   1 +
 libmultipath/checkers.h                 |   1 +
 libmultipath/checkers/Makefile          |   3 +-
 libmultipath/checkers/alua.c            | 426 ++++++++++++++++++++++++
 libmultipath/checkers/alua.h            |  15 +
 libmultipath/prio.c                     |   1 +
 libmultipath/prio.h                     |   1 +
 libmultipath/prioritizers/Makefile      |   1 +
 libmultipath/prioritizers/alua_cached.c | 225 +++++++++++++
 libmultipath/prioritizers/alua_rtpg.c   |  12 +-
 libmultipath/prioritizers/alua_rtpg.h   |   1 +
 libmultipath/prioritizers/sysfs.c       |   7 +-
 libmultipath/propsel.c                  |  25 +-
 libmultipath/structs.c                  |   2 +
 libmultipath/structs.h                  |   3 +
 16 files changed, 721 insertions(+), 8 deletions(-)
 create mode 100644 libmultipath/checkers/alua.c
 create mode 100644 libmultipath/checkers/alua.h
 create mode 100644 libmultipath/prioritizers/alua_cached.c

-- 
2.50.1 (Apple Git-155)


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2026-03-15  2:37 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-12  0:16 [PATCH 0/1] checkers: add alua path checker Brian Bunker
2026-03-12  0:16 ` [PATCH 1/1] " Brian Bunker
2026-03-12 16:32   ` Martin Wilck
     [not found]     ` <CAHZQxy+V5YSiHnB5sp8A_jbN_n1OQ633KiDeFa+vXQrNafHzDA@mail.gmail.com>
2026-03-12 19:31       ` Martin Wilck
2026-03-12 19:33     ` Brian Bunker
2026-03-13  0:34     ` Xose Vazquez Perez
2026-03-15  2:37   ` Benjamin Marzinski
2026-03-12  7:10 ` [PATCH 0/1] " Hannes Reinecke
2026-03-12 16:48   ` Martin Wilck
2026-03-12 21:05     ` Xose Vazquez Perez
2026-03-12 19:19   ` Brian Bunker
2026-03-13  0:43 ` [PATCH 0/1] pr: " Xose Vazquez Perez

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