Compare commits

...
Sign in to create a new pull request.

2 commits

Author SHA1 Message Date
Benjamin Marzinski
d6f2be9e59 device-mapper-multipath-0.13.0-2
Move STI tests to TMT
2025-11-13 19:23:18 -05:00
Benjamin Marzinski
3c9f48504b device-mapper-multipath-0.13.0-1
Update source to upstream release 0.13.0
  * Previous patches 0001-0004 are included in the tarball
Install /lib/systemd/system/multipathd-queueing.service
Rename redhat patches
  * Previous patches 0005-0017 are now patches 0001-0013
2025-11-04 18:22:02 -05:00
24 changed files with 151 additions and 365 deletions

1
.gitignore vendored
View file

@ -34,3 +34,4 @@ multipath-tools-091027.tar.gz
/multipath-tools-0.9.9.tgz
/multipath-tools-0.10.0.tgz
/multipath-tools-0.11.1.tgz
/multipath-tools-0.13.0.tgz

View file

@ -1,4 +1,4 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 64a07df23affd21842fdc604887276e62e5b41de Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Thu, 13 Apr 2017 07:22:23 -0500
Subject: [PATCH] RH: fixup udev rules for redhat
@ -15,7 +15,7 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/Makefile.inc b/Makefile.inc
index 65f6efc8..c225a1ed 100644
index 9e3dc466..ead89030 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -34,7 +34,7 @@ endif

View file

@ -1,101 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Martin Wilck <mwilck@suse.com>
Date: Thu, 23 Jan 2025 22:19:39 +0100
Subject: [PATCH] multipathd: trigger uevents for blacklisted paths in
reconfigure
If multipathd has already configured maps, and the user changes the
blacklist or other parameters that cause currently multipathed
devices to be skipped, and then runs "multipathd reconfigure"
or restarts multipathd, multipathd flushes the maps in question,
but doesn't trigger uevents for the now-blacklisted paths.
This is because the blacklisted paths are removed from the discovered
maps internally when update_pathvec_from_dm() is called through
map_discovery() and update_multipath_table(); when later
trigger_paths_udev_change() is called from coalesce_maps(), the
map contains no paths for which an uevent could be triggered.
The map_discovery() code flow is special, because we will call
coalesce_paths() afterwards anyway and reconstruct the mpvec. Unlike the
regular code flow, we don't want the maps to be "corrected" in this
case, because the maps discovered here aren't going to be reloaded.
We just want update_pathvec_from_dm() to populate the pathvec.
Therefore add a new flag DI_DISCOVERY, which is only set when
update_multipath_table() is called from map_discovery(), and if
this flag is set, keep PATHINFO_SKIPPED paths in the map's table in
update_pathvec_from_dm(). Later on, the paths will still be visible
in the old mpp (ompp) in coalesce_maps(), and uevents will be
triggered for them to release them to systemd.
We can't always do this for PATHINFO_SKIPPED, because in some cases
paths may be accepted in a map first and SKIPPED later (for example if
the WWID wasn't yet available at startup). Therefore the special
case for DI_DISCOVERY is necessary.
Signed-off-by: Martin Wilck <mwilck@suse.com>
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmultipath/discovery.h | 2 ++
libmultipath/structs_vec.c | 6 +++++-
multipathd/main.c | 2 +-
3 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/libmultipath/discovery.h b/libmultipath/discovery.h
index 7d42eae5..9824a8d3 100644
--- a/libmultipath/discovery.h
+++ b/libmultipath/discovery.h
@@ -72,6 +72,7 @@ enum discovery_mode {
DI_BLACKLIST__,
DI_NOIO__,
DI_NOFALLBACK__,
+ DI_DISCOVERY__,
};
#define DI_SYSFS (1 << DI_SYSFS__)
@@ -82,6 +83,7 @@ enum discovery_mode {
#define DI_BLACKLIST (1 << DI_BLACKLIST__)
#define DI_NOIO (1 << DI_NOIO__) /* Avoid IO on the device */
#define DI_NOFALLBACK (1 << DI_NOFALLBACK__) /* do not allow wwid fallback */
+#define DI_DISCOVERY (1 << DI_DISCOVERY__) /* set only during map discovery */
#define DI_ALL (DI_SYSFS | DI_SERIAL | DI_CHECKER | DI_PRIO | \
DI_WWID)
diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c
index 7a4e3eb0..5ccdaea0 100644
--- a/libmultipath/structs_vec.c
+++ b/libmultipath/structs_vec.c
@@ -109,6 +109,9 @@ static bool update_pathvec_from_dm(vector pathvec, struct multipath *mpp,
bool mpp_has_wwid;
bool must_reload = false;
bool pg_deleted = false;
+ bool map_discovery = !!(pathinfo_flags & DI_DISCOVERY);
+
+ pathinfo_flags &= ~DI_DISCOVERY;
if (!mpp->pg)
return false;
@@ -195,7 +198,8 @@ static bool update_pathvec_from_dm(vector pathvec, struct multipath *mpp,
rc = pathinfo(pp, conf,
DI_SYSFS|DI_WWID|DI_BLACKLIST|DI_NOFALLBACK|pathinfo_flags);
pthread_cleanup_pop(1);
- if (rc != PATHINFO_OK) {
+ if (rc == PATHINFO_FAILED ||
+ (rc == PATHINFO_SKIPPED && !map_discovery)) {
condlog(1, "%s: error %d in pathinfo, discarding path",
pp->dev, rc);
vector_del_slot(pgp->paths, j--);
diff --git a/multipathd/main.c b/multipathd/main.c
index 9ed27da0..fb3e44a8 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -1763,7 +1763,7 @@ map_discovery (struct vectors * vecs)
return 1;
vector_foreach_slot (vecs->mpvec, mpp, i)
- if (update_multipath_table(mpp, vecs->pathvec, 0) != DMP_OK) {
+ if (update_multipath_table(mpp, vecs->pathvec, DI_DISCOVERY) != DMP_OK) {
remove_map(mpp, vecs->pathvec, vecs->mpvec);
i--;
}

View file

@ -1,4 +1,4 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From f7be16ac9fce97585a4552d49f3d3c54a93c9c17 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Wed, 2 Jul 2014 12:49:53 -0500
Subject: [PATCH] RH: Remove the property blacklist exception builtin
@ -42,10 +42,10 @@ index 17e1b54a..10d13e98 100644
udev_device_get_properties_list_entry(udev)) {
diff --git a/multipath/multipath.conf.5.in b/multipath/multipath.conf.5.in
index 4388baad..af9fbb96 100644
index 3c9ae097..ba291e11 100644
--- a/multipath/multipath.conf.5.in
+++ b/multipath/multipath.conf.5.in
@@ -1469,9 +1469,14 @@ keywords. Both are regular expressions. For a full description of these keywords
@@ -1470,9 +1470,14 @@ keywords. Both are regular expressions. For a full description of these keywords
Regular expression for an udev property. All
devices that have matching udev properties will be excluded/included.
The handling of the \fIproperty\fR keyword is special,
@ -61,7 +61,7 @@ index 4388baad..af9fbb96 100644
.
.RS
.PP
@@ -1482,10 +1487,6 @@ Blacklisting by missing properties is only applied to devices which do have the
@@ -1483,10 +1488,6 @@ Blacklisting by missing properties is only applied to devices which do have the
property specified by \fIuid_attribute\fR (e.g. \fIID_SERIAL\fR)
set. Previously, it was applied to every device, possibly causing devices to be
blacklisted because of temporary I/O error conditions.
@ -73,10 +73,10 @@ index 4388baad..af9fbb96 100644
.TP
.B protocol
diff --git a/tests/blacklist.c b/tests/blacklist.c
index ba8dfd07..693db3fa 100644
index ab3da619..52ae03e0 100644
--- a/tests/blacklist.c
+++ b/tests/blacklist.c
@@ -384,9 +384,8 @@ static void test_property_missing(void **state)
@@ -371,9 +371,8 @@ static void test_property_missing(void **state)
{
static struct udev_device udev = { "sdb", { "ID_FOO", "ID_BAZ", "ID_BAR", "ID_SERIAL", NULL } };
conf.blist_property = blist_property_wwn;
@ -87,7 +87,7 @@ index ba8dfd07..693db3fa 100644
assert_int_equal(filter_property(&conf, &udev, 3, "ID_BLAH"),
MATCH_NOTHING);
assert_int_equal(filter_property(&conf, &udev, 3, ""),
@@ -478,9 +477,7 @@ static void test_filter_path_missing1(void **state)
@@ -465,9 +464,7 @@ static void test_filter_path_missing1(void **state)
conf.blist_device = blist_device_foo_bar;
conf.blist_protocol = blist_protocol_fcp;
conf.blist_wwid = blist_wwid_xyzzy;

View file

@ -1,63 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Mon, 3 Feb 2025 16:43:42 -0500
Subject: [PATCH] multipath-tools: fix compilation with latest userspace-rcu
code
starting with version 0.15, userspace-rcu can be compiled with
CONFIG_RCU_USE_ATOMIC_BUILTINS. If it is, then any programs using it
must be compiled with at least the C11 standard. See:
https://github.com/urcu/userspace-rcu/commit/89280d020bf064d1055c360fb9974f128051043f
To deal with this, check if compiling with gnu99 fails, and if so,
switch to using gnu11.
Based-on-patch-by: Yaakov Selkowitz <yselkowi@redhat.com>
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
---
Makefile.inc | 2 +-
create-config.mk | 13 +++++++++++++
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/Makefile.inc b/Makefile.inc
index 729618bd..65f6efc8 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -115,7 +115,7 @@ CPPFLAGS := $(FORTIFY_OPT) $(CPPFLAGS) $(D_URCU_VERSION) \
-DRUNTIME_DIR=\"$(runtimedir)\" -DCONFIG_DIR=\"$(TGTDIR)$(configdir)\" \
-DDEFAULT_CONFIGFILE=\"$(TGTDIR)$(configfile)\" -DSTATE_DIR=\"$(TGTDIR)$(statedir)\" \
-DEXTRAVERSION=\"$(EXTRAVERSION)\" -MMD -MP
-CFLAGS := -std=gnu99 $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \
+CFLAGS := -std=$(C_STD) $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \
-fexceptions
BIN_CFLAGS := -fPIE -DPIE
LIB_CFLAGS := -fPIC
diff --git a/create-config.mk b/create-config.mk
index 8bd2c20c..ab163ed1 100644
--- a/create-config.mk
+++ b/create-config.mk
@@ -157,6 +157,18 @@ FORTIFY_OPT := $(shell \
echo "-D_FORTIFY_SOURCE=2"; \
fi)
+# Check is you can compile with the urcu.h header, using the C99 standard.
+# If urcu/config-<arch>.h defines CONFIG_RCU_USE_ATOMIC_BUILTINS, then anything
+# including urcu.h must be compiled with at least the C11 standard. See:
+# https://github.com/urcu/userspace-rcu/commit/89280d020bf064d1055c360fb9974f128051043f
+C_STD := $(shell \
+ if printf '$(__HASH__)include <urcu.h>\nint main(void) { return 0; }\n' | $(CC) -o /dev/null -c -xc --std=gnu99 - 2>/dev/null; \
+ then \
+ echo "gnu99"; \
+ else \
+ echo "gnu11"; \
+ fi)
+
STACKPROT :=
all: $(TOPDIR)/config.mk
@@ -182,3 +194,4 @@ $(TOPDIR)/config.mk: $(multipathdir)/autoconfig.h
@echo "W_MISSING_INITIALIZERS := $(call TEST_MISSING_INITIALIZERS)" >>$@
@echo "W_URCU_TYPE_LIMITS := $(call TEST_URCU_TYPE_LIMITS)" >>$@
@echo "ENABLE_LIBDMMP := $(ENABLE_LIBDMMP)" >>$@
+ @echo "C_STD := $(C_STD)" >>$@

View file

@ -1,4 +1,4 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 5613e07ce9cabf2fdc402f6f102cc54bd1059800 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Wed, 15 Oct 2014 10:39:30 -0500
Subject: [PATCH] RH: don't start without a config file
@ -18,7 +18,7 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
multipath/multipath.rules.in | 1 +
multipathd/multipathd.8.in | 2 ++
multipathd/multipathd.service.in | 1 +
multipathd/multipathd.socket | 1 +
multipathd/multipathd.socket.in | 1 +
7 files changed, 25 insertions(+)
diff --git a/libmultipath/config.c b/libmultipath/config.c
@ -58,10 +58,10 @@ index 5b4ebf8c..2302eacc 100644
enum devtypes {
DEV_NONE,
diff --git a/multipath/main.c b/multipath/main.c
index 28e3a055..346acb61 100644
index f2adcdeb..31012874 100644
--- a/multipath/main.c
+++ b/multipath/main.c
@@ -843,11 +843,14 @@ main (int argc, char *argv[])
@@ -834,11 +834,14 @@ main (int argc, char *argv[])
char *dev = NULL;
struct config *conf;
bool enable_foreign = false;
@ -76,7 +76,7 @@ index 28e3a055..346acb61 100644
if (init_config(DEFAULT_CONFIGFILE))
exit(RTVL_FAIL);
if (atexit(uninit_config))
@@ -1101,6 +1104,9 @@ main (int argc, char *argv[])
@@ -1092,6 +1095,9 @@ main (int argc, char *argv[])
while ((r = configure(conf, cmd, dev_type, dev)) == RTVL_RETRY)
condlog(3, "restart multipath configuration process");
@ -99,7 +99,7 @@ index 2ac1972f..cc248231 100644
ENV{DEVTYPE}!="partition", GOTO="test_dev"
IMPORT{parent}="DM_MULTIPATH_DEVICE_PATH"
diff --git a/multipathd/multipathd.8.in b/multipathd/multipathd.8.in
index 7bc8806e..315884eb 100644
index 8815e099..342e363e 100644
--- a/multipathd/multipathd.8.in
+++ b/multipathd/multipathd.8.in
@@ -49,6 +49,8 @@ map regains its maximum performance and redundancy.
@ -112,10 +112,10 @@ index 7bc8806e..315884eb 100644
.
.\" ----------------------------------------------------------------------------
diff --git a/multipathd/multipathd.service.in b/multipathd/multipathd.service.in
index b6a25b31..3d957733 100644
index eb58943c..ab166435 100644
--- a/multipathd/multipathd.service.in
+++ b/multipathd/multipathd.service.in
@@ -6,6 +6,7 @@ Wants=systemd-udevd-kernel.socket @MODPROBE_UNIT@
@@ -6,6 +6,7 @@ Wants=systemd-udevd-kernel.socket multipathd-queueing.service @MODPROBE_UNIT@
After=systemd-udevd-kernel.socket @MODPROBE_UNIT@
After=multipathd.socket systemd-remount-fs.service
Before=initrd-cleanup.service
@ -123,10 +123,10 @@ index b6a25b31..3d957733 100644
DefaultDependencies=no
Conflicts=shutdown.target
Conflicts=initrd-cleanup.service
diff --git a/multipathd/multipathd.socket b/multipathd/multipathd.socket
index 6a62f5fd..263b6b0c 100644
--- a/multipathd/multipathd.socket
+++ b/multipathd/multipathd.socket
diff --git a/multipathd/multipathd.socket.in b/multipathd/multipathd.socket.in
index 11002fce..5ed24757 100644
--- a/multipathd/multipathd.socket.in
+++ b/multipathd/multipathd.socket.in
@@ -1,6 +1,7 @@
[Unit]
Description=multipathd control socket

View file

@ -1,40 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Tue, 11 Feb 2025 13:11:03 -0500
Subject: [PATCH] libmultipath: include urcu.h before urcu/atomic.h
urcu/atomic.h requires some header files included by urcu.h. Make sure
to include it first.
Fixes: https://github.com/opensvc/multipath-tools/issues/112
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
---
libmultipath/checkers/tur.c | 1 +
libmultipath/lock.h | 1 +
2 files changed, 2 insertions(+)
diff --git a/libmultipath/checkers/tur.c b/libmultipath/checkers/tur.c
index e70a2e11..0010acf8 100644
--- a/libmultipath/checkers/tur.c
+++ b/libmultipath/checkers/tur.c
@@ -15,6 +15,7 @@
#include <errno.h>
#include <sys/time.h>
#include <pthread.h>
+#include <urcu.h>
#include <urcu/uatomic.h>
#include "checkers.h"
diff --git a/libmultipath/lock.h b/libmultipath/lock.h
index 38473a8c..5f323055 100644
--- a/libmultipath/lock.h
+++ b/libmultipath/lock.h
@@ -2,6 +2,7 @@
#define LOCK_H_INCLUDED
#include <pthread.h>
+#include <urcu.h>
#include <urcu/uatomic.h>
#include <stdbool.h>

View file

@ -1,4 +1,4 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 283b5dd645663a2cf16f2813581772d7a84db6ad Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Fri, 25 Jan 2019 14:54:56 -0600
Subject: [PATCH] RH: Fix nvme function missing argument
@ -12,10 +12,10 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libmultipath/nvme/argconfig.h b/libmultipath/nvme/argconfig.h
index e6c54453..0c6c9439 100644
index b3caa7be..f91504c9 100644
--- a/libmultipath/nvme/argconfig.h
+++ b/libmultipath/nvme/argconfig.h
@@ -76,7 +76,7 @@ struct argconfig_commandline_options {
@@ -63,7 +63,7 @@ struct argconfig_commandline_options {
extern "C" {
#endif

View file

@ -1,29 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 17 Feb 2025 12:05:03 -0800
Subject: [PATCH] libmpathutils/uxsock.c: Include string.h for memcpy
Fixes
uxsock.c:72:2: error: call to undeclared library function 'memcpy' with type 'void *(void *, const void *, unsigned long)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Benjamin Marzinski <bmarzins@redhat.com>
Cc: Martin Wilck <mwilck@suse.com>
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmpathutil/uxsock.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/libmpathutil/uxsock.c b/libmpathutil/uxsock.c
index 2135476d..a474874e 100644
--- a/libmpathutil/uxsock.c
+++ b/libmpathutil/uxsock.c
@@ -8,6 +8,7 @@
#include <stdlib.h>
#include <unistd.h>
#include <stdarg.h>
+#include <string.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>

View file

@ -1,4 +1,4 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From bf46f8029998498045bb055415ba3ff515c79eaa Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Wed, 19 Apr 2017 06:10:01 -0500
Subject: [PATCH] RH: use rpm optflags if present
@ -13,10 +13,10 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
1 file changed, 18 insertions(+), 7 deletions(-)
diff --git a/Makefile.inc b/Makefile.inc
index c225a1ed..7774f1f4 100644
index ead89030..03aee175 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -99,28 +99,39 @@ SYSTEMD_LIBDEPS := $(if $(SYSTEMD),$(if $(shell test $(SYSTEMD) -gt 209 && echo
@@ -102,17 +102,29 @@ SYSTEMD_LIBDEPS := $(if $(SYSTEMD),$(if $(shell test $(SYSTEMD) -gt 209 && echo
MODPROBE_UNIT := $(shell test "0$(SYSTEMD)" -lt 245 2>/dev/null || \
echo "modprobe@dm_multipath.service")
@ -50,8 +50,10 @@ index c225a1ed..7774f1f4 100644
-D_FILE_OFFSET_BITS=64 \
-DBIN_DIR=\"$(bindir)\" -DMULTIPATH_DIR=\"$(TGTDIR)$(plugindir)\" \
-DRUNTIME_DIR=\"$(runtimedir)\" -DCONFIG_DIR=\"$(TGTDIR)$(configdir)\" \
-DDEFAULT_CONFIGFILE=\"$(TGTDIR)$(configfile)\" -DSTATE_DIR=\"$(TGTDIR)$(statedir)\" \
-DEXTRAVERSION=\"$(EXTRAVERSION)\" -MMD -MP
@@ -121,12 +133,11 @@ CPPFLAGS := $(FORTIFY_OPT) $(CPPFLAGS) $(D_URCU_VERSION) \
-DABSTRACT_SOCKET=\"$(abstract_socket)\" -DPATHNAME_SOCKET=\"$(pathname_socket)\" \
-DWSTRINGOP_TRUNCATION=$(if $(WSTRINGOP_TRUNCATION),1,0) \
-MMD -MP
-CFLAGS := -std=$(C_STD) $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \
- -fexceptions
+CFLAGS := -std=$(C_STD) $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe

View file

@ -1,4 +1,4 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 29e5c6d6e2177e73d1be2ed2af66c1007487bf60 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Thu, 16 Oct 2014 15:49:01 -0500
Subject: [PATCH] RH: add mpathconf
@ -23,10 +23,10 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
create mode 100644 multipath/mpathconf.8
diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt
index 7843c380..ab5259cf 100644
index a5856bcc..5c9113ba 100644
--- a/.github/actions/spelling/expect.txt
+++ b/.github/actions/spelling/expect.txt
@@ -127,9 +127,11 @@ Marzinski
@@ -131,9 +131,11 @@ Marzinski
misdetection
mpath
mpathb
@ -38,7 +38,7 @@ index 7843c380..ab5259cf 100644
multipathc
multipathd
multipathed
@@ -147,6 +149,7 @@ ontap
@@ -154,6 +156,7 @@ ontap
OOM
opensvc
OPTFLAGS

View file

@ -1,4 +1,4 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From d6ad888bad3850bb0a342ebcdc9fd78773eb3b2a Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Fri, 17 Oct 2014 11:20:34 -0500
Subject: [PATCH] RH: add wwids from kernel cmdline mpath.wwids with -A
@ -20,10 +20,10 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
3 files changed, 59 insertions(+), 3 deletions(-)
diff --git a/multipath/main.c b/multipath/main.c
index 346acb61..adc50d69 100644
index 31012874..a667c2ee 100644
--- a/multipath/main.c
+++ b/multipath/main.c
@@ -120,7 +120,7 @@ usage (char * progname)
@@ -111,7 +111,7 @@ usage (char * progname)
fprintf (stderr, " %s [-v level] [-R retries] -F\n", progname);
fprintf (stderr, " %s [-v level] [-l|-ll] [device]\n", progname);
fprintf (stderr, " %s [-v level] [-a|-w] device\n", progname);
@ -32,7 +32,7 @@ index 346acb61..adc50d69 100644
fprintf (stderr, " %s [-v level] [-i] [-c|-C] device\n", progname);
fprintf (stderr, " %s [-v level] [-i] [-u|-U]\n", progname);
fprintf (stderr, " %s [-h|-t|-T]\n", progname);
@@ -134,6 +134,8 @@ usage (char * progname)
@@ -125,6 +125,8 @@ usage (char * progname)
" -f flush a multipath device map\n"
" -F flush all multipath device maps\n"
" -a add a device wwid to the wwids file\n"
@ -41,7 +41,7 @@ index 346acb61..adc50d69 100644
" -c check if a device should be a path in a multipath device\n"
" -C check if a multipath device has usable paths\n"
" -q allow queue_if_no_path when multipathd is not running\n"
@@ -449,6 +451,50 @@ static void cleanup_vecs(void)
@@ -440,6 +442,50 @@ static void cleanup_vecs(void)
free_pathvec(vecs.pathvec, FREE_PATHS);
}
@ -92,7 +92,7 @@ index 346acb61..adc50d69 100644
static int
configure (struct config *conf, enum mpath_cmds cmd,
enum devtypes dev_type, char *devpath)
@@ -860,7 +906,7 @@ main (int argc, char *argv[])
@@ -851,7 +897,7 @@ main (int argc, char *argv[])
condlog(1, "failed to register cleanup handler for vecs: %m");
if (atexit(cleanup_bindings))
condlog(1, "failed to register cleanup handler for bindings: %m");
@ -101,7 +101,7 @@ index 346acb61..adc50d69 100644
switch(arg) {
case 'v':
if (!isdigit(optarg[0])) {
@@ -931,6 +977,10 @@ main (int argc, char *argv[])
@@ -922,6 +968,10 @@ main (int argc, char *argv[])
case 'T':
cmd = CMD_DUMP_CONFIG;
break;
@ -138,7 +138,7 @@ index b88e9a4c..edd742aa 100644
Remove the WWID for the specified device from the WWIDs file.
.
diff --git a/multipathd/multipathd.service.in b/multipathd/multipathd.service.in
index 3d957733..7ef6e99e 100644
index ab166435..1ec08c6e 100644
--- a/multipathd/multipathd.service.in
+++ b/multipathd/multipathd.service.in
@@ -19,6 +19,7 @@ StartLimitBurst=3

View file

@ -1,4 +1,4 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 064d761121e7e2c7b63ab280e341d8010a413119 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Thu, 7 Jun 2018 17:43:52 -0500
Subject: [PATCH] RH: reset default find_mutipaths value to off
@ -14,7 +14,7 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/libmultipath/defaults.h b/libmultipath/defaults.h
index 02f7e57c..cd03fd1a 100644
index 134b690a..e2fe7ac4 100644
--- a/libmultipath/defaults.h
+++ b/libmultipath/defaults.h
@@ -24,7 +24,7 @@
@ -27,10 +27,10 @@ index 02f7e57c..cd03fd1a 100644
#define DEFAULT_DEV_LOSS_TMO 600
#define DEFAULT_RETAIN_HWHANDLER RETAIN_HWHANDLER_ON
diff --git a/multipath/multipath.conf.5.in b/multipath/multipath.conf.5.in
index af9fbb96..0c1eff40 100644
index ba291e11..b8389db3 100644
--- a/multipath/multipath.conf.5.in
+++ b/multipath/multipath.conf.5.in
@@ -1226,7 +1226,7 @@ as non-multipath and passed on to upper layers.
@@ -1227,7 +1227,7 @@ as non-multipath and passed on to upper layers.
\fBNote:\fR this may cause delays during device detection if
there are single-path devices which aren\'t blacklisted.
.TP

View file

@ -1,4 +1,4 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 335b8eb2773b07a602e84e14c1f3e289a9b25b5a Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Thu, 11 Apr 2019 13:25:42 -0500
Subject: [PATCH] RH: attempt to get ANA info via sysfs first
@ -13,10 +13,10 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
1 file changed, 29 insertions(+), 2 deletions(-)
diff --git a/libmultipath/prioritizers/ana.c b/libmultipath/prioritizers/ana.c
index e9827dca..80a32aa3 100644
index 34527b22..4eaa3cc3 100644
--- a/libmultipath/prioritizers/ana.c
+++ b/libmultipath/prioritizers/ana.c
@@ -24,6 +24,7 @@
@@ -23,6 +23,7 @@
#include "prio.h"
#include "util.h"
#include "structs.h"
@ -24,7 +24,7 @@ index e9827dca..80a32aa3 100644
enum {
ANA_ERR_GETCTRL_FAILED = 1,
@@ -36,6 +37,7 @@ enum {
@@ -35,6 +36,7 @@ enum {
ANA_ERR_GETNS_FAILED,
ANA_ERR_NO_MEMORY,
ANA_ERR_NO_INFORMATION,
@ -32,7 +32,7 @@ index e9827dca..80a32aa3 100644
};
static const char *ana_errmsg[] = {
@@ -49,6 +51,7 @@ static const char *ana_errmsg[] = {
@@ -48,6 +50,7 @@ static const char *ana_errmsg[] = {
[ANA_ERR_GETNS_FAILED] = "couldn't get namespace info",
[ANA_ERR_NO_MEMORY] = "out of memory",
[ANA_ERR_NO_INFORMATION] = "invalid fd",
@ -40,7 +40,7 @@ index e9827dca..80a32aa3 100644
};
static const char *anas_string[] = {
@@ -107,6 +110,27 @@ static int get_ana_state(__u32 nsid, __u32 anagrpid, void *ana_log,
@@ -106,6 +109,27 @@ static int get_ana_state(__u32 nsid, __u32 anagrpid, void *ana_log,
return -ANA_ERR_GETANAS_NOTFOUND;
}
@ -68,7 +68,7 @@ index e9827dca..80a32aa3 100644
static int get_ana_info(struct path * pp)
{
int rc;
@@ -209,8 +233,11 @@ int getprio(struct path *pp, __attribute__((unused)) char *args)
@@ -208,8 +232,11 @@ int getprio(struct path *pp, __attribute__((unused)) char *args)
if (pp->fd < 0)
rc = -ANA_ERR_NO_INFORMATION;

View file

@ -1,4 +1,4 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 137c96d16b6bb03d8a52854e152db4ee36b7d9e4 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Thu, 25 Mar 2021 13:05:10 -0500
Subject: [PATCH] RH: make parse_vpd_pg83 match scsi_id output
@ -14,10 +14,10 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
2 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
index b5851561..a3cc6e83 100644
index 31db8758..21cfcc73 100644
--- a/libmultipath/discovery.c
+++ b/libmultipath/discovery.c
@@ -1219,13 +1219,9 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len,
@@ -1225,13 +1225,9 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len,
good_len = 8;
break;
case 2:
@ -33,7 +33,7 @@ index b5851561..a3cc6e83 100644
good_len = 8;
break;
default:
@@ -1243,10 +1239,6 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len,
@@ -1249,10 +1245,6 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len,
break;
case 0x8:
/* SCSI Name: Prio 3 */

View file

@ -1,4 +1,4 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 374755791536be4870ab2e93ae36549cbaaeb800 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Fri, 25 Mar 2022 18:12:06 -0500
Subject: [PATCH] RH: add scsi device handlers to modules-load.d
@ -11,7 +11,7 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile.inc b/Makefile.inc
index 7774f1f4..0e836f0a 100644
index 03aee175..936a622f 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -16,7 +16,7 @@ READLINE :=

View file

@ -1,4 +1,4 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From cc15379130e8aa068e97c64afd46be212b456d4f Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Tue, 15 Nov 2022 18:03:33 -0600
Subject: [PATCH] RH: compile with libreadline support
@ -12,7 +12,7 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile.inc b/Makefile.inc
index 0e836f0a..e1d3fcd1 100644
index 936a622f..f475f70f 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -12,7 +12,7 @@

View file

@ -1,4 +1,4 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From 2ef5bd86052ba0b22f4d3a16e69cdf268d90a53a Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Fri, 7 Jul 2023 15:25:59 -0500
Subject: [PATCH] RH: Add mpathcleanup

View file

@ -1,5 +1,5 @@
Name: device-mapper-multipath
Version: 0.11.1
Version: 0.13.0
Release: 2%{?dist}
Summary: Tools to manage multipath devices using device-mapper
# readline uses GPL-3.0-only
@ -8,26 +8,22 @@ URL: http://christophe.varoqui.free.fr/
# The source for this package was pulled from upstream's git repo. Use the
# following command to generate the tarball
# curl -L https://github.com/opensvc/multipath-tools/archive/0.11.1.tar.gz -o multipath-tools-0.11.1.tgz
Source0: multipath-tools-0.11.1.tgz
# curl -L https://github.com/opensvc/multipath-tools/archive/0.13.0.tar.gz -o multipath-tools-0.13.0.tgz
Source0: multipath-tools-0.13.0.tgz
Source1: multipath.conf
Patch0001: 0001-multipathd-trigger-uevents-for-blacklisted-paths-in-.patch
Patch0002: 0002-multipath-tools-fix-compilation-with-latest-userspac.patch
Patch0003: 0003-libmultipath-include-urcu.h-before-urcu-atomic.h.patch
Patch0004: 0004-libmpathutils-uxsock.c-Include-string.h-for-memcpy.patch
Patch0005: 0005-RH-fixup-udev-rules-for-redhat.patch
Patch0006: 0006-RH-Remove-the-property-blacklist-exception-builtin.patch
Patch0007: 0007-RH-don-t-start-without-a-config-file.patch
Patch0008: 0008-RH-Fix-nvme-function-missing-argument.patch
Patch0009: 0009-RH-use-rpm-optflags-if-present.patch
Patch0010: 0010-RH-add-mpathconf.patch
Patch0011: 0011-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
Patch0012: 0012-RH-reset-default-find_mutipaths-value-to-off.patch
Patch0013: 0013-RH-attempt-to-get-ANA-info-via-sysfs-first.patch
Patch0014: 0014-RH-make-parse_vpd_pg83-match-scsi_id-output.patch
Patch0015: 0015-RH-add-scsi-device-handlers-to-modules-load.d.patch
Patch0016: 0016-RH-compile-with-libreadline-support.patch
Patch0017: 0017-RH-Add-mpathcleanup.patch
Patch0001: 0001-RH-fixup-udev-rules-for-redhat.patch
Patch0002: 0002-RH-Remove-the-property-blacklist-exception-builtin.patch
Patch0003: 0003-RH-don-t-start-without-a-config-file.patch
Patch0004: 0004-RH-Fix-nvme-function-missing-argument.patch
Patch0005: 0005-RH-use-rpm-optflags-if-present.patch
Patch0006: 0006-RH-add-mpathconf.patch
Patch0007: 0007-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
Patch0008: 0008-RH-reset-default-find_mutipaths-value-to-off.patch
Patch0009: 0009-RH-attempt-to-get-ANA-info-via-sysfs-first.patch
Patch0010: 0010-RH-make-parse_vpd_pg83-match-scsi_id-output.patch
Patch0011: 0011-RH-add-scsi-device-handlers-to-modules-load.d.patch
Patch0012: 0012-RH-compile-with-libreadline-support.patch
Patch0013: 0013-RH-Add-mpathcleanup.patch
# runtime
Requires: %{name}-libs = %{version}-%{release}
@ -115,7 +111,7 @@ This package contains the files needed to develop applications that use
device-mapper-multipath's libdmmp C API library
%prep
%autosetup -n multipath-tools-0.11.1 -p1
%autosetup -n multipath-tools-0.13.0 -p1
cp %{SOURCE1} .
%build
@ -167,6 +163,7 @@ fi
%{_sbindir}/mpathcleanup
%{_sbindir}/mpathpersist
%{_unitdir}/multipathd.service
%{_unitdir}/multipathd-queueing.service
%{_unitdir}/multipathd.socket
%{_mandir}/man5/multipath.conf.5*
%{_mandir}/man8/multipath.8*
@ -237,6 +234,16 @@ fi
%{_pkgconfdir}/libdmmp.pc
%changelog
* Thu Nov 13 2025 Benjamin Marzinski <bmarzins@redhat.com> - 0.13.0-2
- Move STI tests to TMT
* Tue Nov 4 2025 Benjamin Marzinski <bmarzins@redhat.com> - 0.13.0-1
- Update source to upstream release 0.13.0
* Previous patches 0001-0004 are included in the tarball
- Install /lib/systemd/system/multipathd-queueing.service
- Rename redhat patches
* Previous patches 0005-0017 are now patches 0001-0013
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.11.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild

58
plans/multipath.fmf Normal file
View file

@ -0,0 +1,58 @@
summary: basic functionality tests
provision:
hardware:
memory: ">= 2 GB"
prepare:
how: install
package:
- device-mapper-multipath
- perl
discover:
how: shell
tests:
- name: medium_error_scsi_debug
path: /tests/medium_error_scsi_debug
test: ./main.sh
duration: 15m
- name: squelch_scsi_id
path: /tests/squelch_scsi_id
test: ./main.sh
duration: 15m
- name: multipathd_oom
path: /tests/multipathd_oom
test: ./main.sh
duration: 15m
- name: user_friendly_names
path: /tests/user_friendly_names
test: ./main.sh
duration: 15m
- name: kpartx_4k_aligned
path: /tests/kpartx_4k_aligned
test: ./main.sh
duration: 15m
- name: bindings
path: /tests/bindings
test: ./main.sh
duration: 15m
- name: restate_module
path: /tests/restate_module
test: ./main.sh
duration: 15m
- name: find_multipaths
path: /tests/find_multipaths
test: ./main.sh
duration: 15m
- name: multipath_conf_syntax
path: /tests/multipath_conf_syntax
test: ./main.sh
duration: 15m
- name: alias_clash
path: /tests/alias_clash
test: ./main.sh
duration: 15m
execute:
how: tmt

View file

@ -1,2 +1,2 @@
SHA512 (multipath-tools-0.11.1.tgz) = ac6bacd725bc831a140b75a72c81296eb1ed4080fb6350caf6178914d1bdce743705f3bd4e31f318068f6272dc98e12d63ee38228a3521a3d1c7bc8eb30812f9
SHA512 (multipath-tools-0.13.0.tgz) = 75c84524ee27590b8b751ea500898a44e5ac3d58d55be6bcab919d0d423049db3a4466fcb9135705cf63ba074416973bb651255063269e9f682f11d21ba57e59
SHA512 (multipath.conf) = 71953dce5a68adcf60a942305f5a66023e6f4c4baf53b1bfdb4edf65ed5b8e03db804363c36d1dcfd85591f4766f52b515269904c53b84d7b076da0b80b09942

View file

@ -1,5 +0,0 @@
---
standard-inventory-qcow2:
qemu:
m: 2G

View file

@ -1,44 +0,0 @@
---
# No tests suitable for atomic environment
# No tests suitable for container environment
# Tests suitable for classic environment
- hosts: localhost
roles:
- role: standard-test-basic
tags:
- classic
tests:
- medium_error_scsi_debug:
run: ./main.sh
timeout: 15m
- squelch_scsi_id:
run: ./main.sh
timeout: 15m
- multipathd_oom:
run: ./main.sh
timeout: 15m
- user_friendly_names:
run: ./main.sh
timeout: 15m
- kpartx_4k_aligned:
run: ./main.sh
timeout: 15m
- bindings:
run: ./main.sh
timeout: 15m
- restate_module:
run: ./main.sh
timeout: 15m
- find_multipaths:
run: ./main.sh
timeout: 15m
- multipath_conf_syntax:
run: ./main.sh
timeout: 15m
- alias_clash:
run: ./main.sh
timeout: 15m
required_packages:
- device-mapper-multipath
- perl