From 011fdd8859059c102e875559b1916954c3fd352b Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Mon, 2 Feb 2026 16:40:07 -0500 Subject: [PATCH 1/4] libmpathpersist: fix mpath_persistent_reserve_out(3) synopsis The argument list is copy-pasted from mpath_persistent_reserve_in(3) instead of mpath_persistent_reserve_out(3). Use the correct argument list from libmpathpersist/mpath_persist.h. Signed-off-by: Stefan Hajnoczi --- libmpathpersist/mpath_persistent_reserve_out.3 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libmpathpersist/mpath_persistent_reserve_out.3 b/libmpathpersist/mpath_persistent_reserve_out.3 index 3dbeae1f1..ab1f923e1 100644 --- a/libmpathpersist/mpath_persistent_reserve_out.3 +++ b/libmpathpersist/mpath_persistent_reserve_out.3 @@ -6,7 +6,7 @@ .\" Update the date below if you make any significant change. .\" ---------------------------------------------------------------------------- . -.TH MPATH_PERSISTENT_RESERVE_OUT 3 2024-02-09 Linux +.TH MPATH_PERSISTENT_RESERVE_OUT 3 2026-02-02 Linux . . .\" ---------------------------------------------------------------------------- @@ -22,7 +22,7 @@ mpath_persistent_reserve_out \- send PROUT command to DM device . .B #include .P -.BI "int mpath_persistent_reserve_out" "(int fd, int rq_servact, struct prin_resp *resp, int noisy, int verbose)" +.BI "int mpath_persistent_reserve_out" "(int fd, int rq_servact, int rq_scope, unsigned int rq_type, struct prout_param_descriptor *paramp, int noisy, int verbose)" .P . . From 01cc89c46a286168c6f18fe0bf03adaef7be83d9 Mon Sep 17 00:00:00 2001 From: Benjamin Marzinski Date: Wed, 4 Feb 2026 22:41:35 -0500 Subject: [PATCH 2/4] multipathd: fix failures on booting from a multipath device Commit a04be557 ("multipathd: don't add removed/partial paths to new maps") stopped including INIT_PARTIAL paths in the updated multipath devices built during reconfigure(). During normal multipath operation this does make sense, but isn't necessary (the uevent should still come shortly) and the situation is very unlikely to occur. On the other hand, when multipathd starts up after the pivot root during boot, it's very possible that paths will not be fully initialized. Multipathd should not drops paths in this case. The patch mostly reverts a04be557. Paths that are marked as INIT_REMOVED shouldn't be added in coalesce_paths(). adopt_paths() was already making sure that they weren't before a04be557. But it does make sense to catch those paths earlier in coalesce_paths(), so this patch retains that behavior. Fixes: a04be557 ("multipathd: don't add removed/partial paths to new maps") Signed-off-by: Benjamin Marzinski Reviewed-by: Martin Wilck --- libmultipath/configure.c | 14 ++------------ libmultipath/structs_vec.c | 3 +-- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/libmultipath/configure.c b/libmultipath/configure.c index a713ddc45..a954ca311 100644 --- a/libmultipath/configure.c +++ b/libmultipath/configure.c @@ -1108,22 +1108,12 @@ int coalesce_paths (struct vectors *vecs, vector mpvec, char *refwwid, continue; /* 3. if path has disappeared */ - if (pp1->state == PATH_REMOVED) { + if (pp1->state == PATH_REMOVED || pp1->initialized == INIT_REMOVED) { orphan_path(pp1, "path removed"); continue; } - /* - * 4. The path wasn't found in path_discovery. It only exists - * in an old map. - */ - if (pp1->initialized == INIT_PARTIAL || - pp1->initialized == INIT_REMOVED) { - orphan_path(pp1, "path not found"); - continue; - } - - /* 5. path is out of scope */ + /* 4. path is out of scope */ if (refwwid && strncmp(pp1->wwid, refwwid, WWID_SIZE - 1)) continue; diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c index 3e63e9c3f..9384de017 100644 --- a/libmultipath/structs_vec.c +++ b/libmultipath/structs_vec.c @@ -315,8 +315,7 @@ int adopt_paths(vector pathvec, struct multipath *mpp, pp->dev, mpp->alias); continue; } - if (pp->initialized == INIT_REMOVED || - pp->initialized == INIT_PARTIAL) + if (pp->initialized == INIT_REMOVED) continue; if (mpp->queue_mode == QUEUE_MODE_RQ && pp->bus == SYSFS_BUS_NVME && From 3c897dbd32a6426f51715a7d579c9584583ad98c Mon Sep 17 00:00:00 2001 From: Martin Wilck Date: Thu, 5 Feb 2026 11:28:12 +0100 Subject: [PATCH 3/4] Update NEWS.md --- NEWS.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/NEWS.md b/NEWS.md index 03f337739..1fd4766ab 100644 --- a/NEWS.md +++ b/NEWS.md @@ -9,6 +9,10 @@ release. These bug fixes will be tracked in stable branches. See [README.md](README.md) for additional information. +## multipath-tools 0.14.3, 2026/02 + +* Fix boot failures with multipath introduced in 0.14.1. Commit 01cc89c. + ## multipath-tools 0.14.2, 2026/01 ### Bug fixes From 0793f1e1ae368378b4ff9c869509daaeb2b5c8f5 Mon Sep 17 00:00:00 2001 From: Martin Wilck Date: Thu, 5 Feb 2026 11:28:46 +0100 Subject: [PATCH 4/4] libmultipath: bump version to 0.14.3 Signed-off-by: Martin Wilck --- libmultipath/version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libmultipath/version.h b/libmultipath/version.h index fa2650b37..8d25955ce 100644 --- a/libmultipath/version.h +++ b/libmultipath/version.h @@ -11,9 +11,9 @@ #ifndef VERSION_H_INCLUDED #define VERSION_H_INCLUDED -#define VERSION_CODE 0x000E02 +#define VERSION_CODE 0x000E03 /* MMDDYY, in hex */ -#define DATE_CODE 0x011D1A +#define DATE_CODE 0x02051A #define PROG "multipath-tools"