import UBI device-mapper-multipath-0.8.7-39.el9

This commit is contained in:
eabdullin 2025-11-11 15:57:44 +00:00
parent 3193bb46da
commit 633e98645b
11 changed files with 711 additions and 4 deletions

View File

@ -0,0 +1,103 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Thu, 13 Mar 2025 16:08:45 -0400
Subject: [PATCH] multipath: clean up find_multipaths value names
The preferred term is "on" instead of "yes".
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
multipath/mpathconf | 14 +++++++-------
multipath/multipath.conf.5 | 14 ++++++++------
2 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/multipath/mpathconf b/multipath/mpathconf
index 319664b1..ce430075 100644
--- a/multipath/mpathconf
+++ b/multipath/mpathconf
@@ -31,7 +31,7 @@ DEFAULT_CONFIG="# device-mapper-multipath configuration file
defaults {
user_friendly_names yes
- find_multipaths yes
+ find_multipaths on
}"
CONFIGFILE="/etc/multipath.conf"
@@ -49,7 +49,7 @@ function usage
echo "Disable: --disable"
echo "Only allow certain wwids (instead of enable): --allow <WWID>"
echo "Set user_friendly_names (Default y): --user_friendly_names <y|n>"
- echo "Set find_multipaths (Default y): --find_multipaths <yes|no|strict|greedy|smart>"
+ echo "Set find_multipaths (Default on): --find_multipaths <on|yes|y|off|no|n|strict|greedy|smart>"
echo "Set default property blacklist (Default n): --property_blacklist <y|n>"
echo "Set enable_foreign to show foreign devices (Default n): --enable_foreign <y|n>"
echo "Set recheck_wwid (Defaut n): --recheck_wwid <y|n>"
@@ -253,11 +253,11 @@ function validate_args
exit 1
fi
if [ "$FIND" = "y" ]; then
- FIND="yes"
+ FIND="on"
elif [ "$FIND" = "n" ]; then
- FIND="no"
- elif [ -n "$FIND" ] && [ "$FIND" != "yes" -a "$FIND" != "no" -a "$FIND" != "strict" -a "$FIND" != "greedy" -a "$FIND" != "smart" ]; then
- echo "--find_multipaths must be one of 'yes' 'no' 'strict' 'greedy' or 'smart'"
+ FIND="off"
+ elif [ -n "$FIND" ] && [ "$FIND" != "on" -a "$FIND" != "yes" -a "$FIND" != "off" -a "$FIND" != "no" -a "$FIND" != "strict" -a "$FIND" != "greedy" -a "$FIND" != "smart" ]; then
+ echo "--find_multipaths must be one of 'on' 'yes' 'y' 'off' 'no' 'n' 'strict' 'greedy' or 'smart'"
exit 1
fi
if [ -n "$PROPERTY" ] && [ "$PROPERTY" != "y" -a "$PROPERTY" != "n" ]; then
@@ -422,7 +422,7 @@ if [ -n "$SHOW_STATUS" ]; then
echo "multipath is disabled"
fi
if [ -z "$HAVE_FIND" ]; then
- echo "find_multipaths is no"
+ echo "find_multipaths is off"
else
echo "find_multipaths is $HAVE_FIND"
fi
diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
index 10eddc0c..8684bd63 100644
--- a/multipath/multipath.conf.5
+++ b/multipath/multipath.conf.5
@@ -1159,22 +1159,24 @@ listed in the \fBwwids_file\fR. Users can manually set up multipath maps using t
\fBmultipathd add map\fR command. Once set up manually, the map is
remembered in the wwids file and will be set up automatically in the future.
.TP
-.I no
+.I off
Multipath behaves like \fBstrict\fR. Multipathd behaves like \fBgreedy\fR.
+\fIno\fR or \fI0\fR is accepted as an alias for \fIoff\fR.
.TP
-.I yes
+.I on
Both multipathd and multipath treat a device as multipath device if the
conditions for \fBstrict\fR are met, or if at least two non-blacklisted paths
-with the same WWID have been detected.
+with the same WWID have been detected. \fIyes\fR or \fI1\fR is accepted as an
+alias for \fIon\fR.
.TP
.I greedy
Both multipathd and multipath treat every non-blacklisted device as multipath
device path.
.TP
.I smart
-This differs from \fIfind_multipaths yes\fR only in
+This differs from \fIfind_multipaths on\fR only in
the way it treats new devices for which only one path has been
-detected yet. When such a device is first encounted in udev rules, it is
+detected yet. When such a device is first encountered in udev rules, it is
treated as a multipath device. multipathd waits whether additional paths with
the same WWID appears. If that happens, it sets up a multipath map. If it
doesn\'t happen until a
@@ -1184,7 +1186,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
-The default is: \fBstrict\fR
+The default is: \fBoff\fR
.RE
.
.

View File

@ -0,0 +1,71 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Thu, 6 Mar 2025 18:52:02 -0500
Subject: [PATCH] multipathd: Add multipathd man page section about sockets
Add a section with information about how to communicate with the
multipathd daemon to the man page. Also mention that multipathd
commands can be run directly from the command line.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
multipathd/multipathd.8 | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/multipathd/multipathd.8 b/multipathd/multipathd.8
index d834f89e..d3aa7a73 100644
--- a/multipathd/multipathd.8
+++ b/multipathd/multipathd.8
@@ -68,6 +68,18 @@ bindings file. If a \fIuser_friendly_name\fR doesn't already exist for a device,
will use its WWID as its alias.
.
.TP
+.B \-k\fIcommand\fB
+multipathd executes the given command (see \fBCOMMANDS\fR below). If the
+command contains whitespace or shell special characters, it needs to be quoted
+like in \fImultipathd -k'show topology'\fR. No whitespace is allowed between
+the \fB-k\fR and the command string.
+
+Commands can also be issued without using \fB-k\fR. In this case, the command
+string should not be quoted. Command arguments that contain whitespace or
+special characters still need to be quoted, like in \fImultipathd show paths
+format "%n %w"\fR
+.
+.TP
.B \-k
multipathd will enter interactive mode. From this mode, the available commands can
be viewed by entering '\fIhelp\fR'. When you are finished entering commands, press
@@ -87,6 +99,33 @@ multipath devices on dmevents. Use this flag to force it to use the old event
waiting method, based on creating a seperate thread for each device.
.
.
+.\" ----------------------------------------------------------------------------
+.SH COMMUNICATING WITH MULTIPATHD
+.\" ----------------------------------------------------------------------------
+
+In addition to the multipathd CLI, the \fBlibmpathcmd\fR library can be used to
+send commands (see \fBCOMMANDS\fR below) to the multipathd daemon from other
+programs. By default, multipathd listens on both the
+\fI@/org/kernel/linux/storage/multipathd\fR abstract namespace socket and the
+\fI/run/multipathd.socket\fR socket file. libmpathcmd will use either of these
+sockets to connect to multipathd. The socket file can be useful to communicate
+with multipathd from different namespaces since it can be bind mounted in them,
+unlike the abstract namespace socket. Multipathd will accept \fBlist|show\fR
+commands from any user. All other commands must be issued by root.
+
+It is possible to change the sockets that multipathd listens on. If
+\fImultipathd.socket\fR is running, multipathd will use the sockets it listens
+on. A maximum of two sockets can be defined by \fImultipathd.socket\fR, and by
+default it listens on \fI@/org/kernel/linux/storage/multipathd\fR and
+\fI/run/multipathd.socket\fR. If \fImultipathd.socket\fR is not running, a
+single socket can be configured for listening on by setting the
+\fIMULTIPATH_SOCKET_NAME\fR environment variable when starting multipathd. This
+environment variable must also be set to make multipathd CLI commands (or any
+other program using libmpathcmd) connect to the multipathd daemon using a
+non-default socket, regardless of whether that socket was set for the daemon
+using \fImultipathd.socket\fR or the \fIMULTIPATH_SOCKET_NAME\fR environment
+variable.
+.
.
.\" ----------------------------------------------------------------------------
.SH COMMANDS

View File

@ -0,0 +1,45 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Wed, 2 Apr 2025 19:13:19 -0400
Subject: [PATCH] multipathd: monitor new multipath dev even if we can't update
it
If a multipath device was created by the multipath command, multipathd
might not agree with how the device was created. ev_add_map() can reload
the device with a different table by calling add_map_without_path() ->
update_map(). If this reloading of the map failed, multipathd was simply
ignoring the multipath device, even though it still existed.
One way that reloading can fail is if a path that multipathd already has
initialized goes offline. If a multipath device is created by the
multipath command while the path is offline, it will not use the offline
path, since multipath won't be able to get the necessary pathinfo.
However, multipathd will already have the pathinfo for the path, and may
not even know that it's offline, since the path is an orphan. When it
tries to reload the device, it will include the offline path, and the
reload will fail.
Instead of ignoring the device if it can't reload it, multipathd should
just montior it as it is. When the path device is no longer offline, it
can be added back to the multipath device by calling
"multipathd reconfigure" or "multipathd add path <path>".
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
---
multipathd/main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/multipathd/main.c b/multipathd/main.c
index 820d4e68..c5f458b9 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -593,7 +593,7 @@ retry:
}
fail:
- if (new_map && (retries < 0 || wait_for_events(mpp, vecs))) {
+ if (new_map && wait_for_events(mpp, vecs)) {
condlog(0, "%s: failed to create new map", mpp->alias);
remove_map(mpp, vecs->pathvec, vecs->mpvec);
return 1;

View File

@ -0,0 +1,75 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Wed, 2 Apr 2025 19:13:20 -0400
Subject: [PATCH] libmultipath: add helper function check_path_wwid_change
Wrap some code from select_recheck_wwid() in a helper function. A future
patch will call this code from a different function.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
---
libmultipath/discovery.c | 13 ++++++++++++-
libmultipath/discovery.h | 2 +-
libmultipath/propsel.c | 4 +---
3 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
index 672c783b..22d114b3 100644
--- a/libmultipath/discovery.c
+++ b/libmultipath/discovery.c
@@ -2184,7 +2184,7 @@ static ssize_t uid_fallback(struct path *pp, int path_state,
return len;
}
-bool has_uid_fallback(struct path *pp)
+static bool has_uid_fallback(const struct path *pp)
{
/*
* Falling back to direct WWID determination is dangerous
@@ -2205,6 +2205,17 @@ bool has_uid_fallback(struct path *pp)
!strcmp(pp->uid_attribute, ""))));
}
+bool can_recheck_wwid(const struct path *pp)
+{
+ /*
+ * check_path_wwid_change() only works for scsi devices, and it
+ * is only guaranteed to give the same WWID if the path uses
+ * the default uid_attribute
+ */
+ return (pp->bus == SYSFS_BUS_SCSI && !pp->getuid &&
+ has_uid_fallback(pp));
+}
+
int
get_uid (struct path * pp, int path_state, struct udev_device *udev,
int allow_fallback)
diff --git a/libmultipath/discovery.h b/libmultipath/discovery.h
index c2a88686..c7f1becd 100644
--- a/libmultipath/discovery.h
+++ b/libmultipath/discovery.h
@@ -54,7 +54,7 @@ ssize_t sysfs_get_inquiry(struct udev_device *udev,
unsigned char *buff, size_t len);
int sysfs_get_asymmetric_access_state(struct path *pp,
char *buff, int buflen);
-bool has_uid_fallback(struct path *pp);
+bool can_recheck_wwid(const struct path *pp);
int get_uid(struct path * pp, int path_state, struct udev_device *udev,
int allow_fallback);
bool is_vpd_page_supported(int fd, int pg);
diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
index be781ff7..0b6e22c1 100644
--- a/libmultipath/propsel.c
+++ b/libmultipath/propsel.c
@@ -672,9 +672,7 @@ int select_recheck_wwid(struct config *conf, struct path * pp)
pp_set_conf(recheck_wwid);
pp_set_default(recheck_wwid, DEFAULT_RECHECK_WWID);
out:
- if (pp->recheck_wwid == RECHECK_WWID_ON &&
- (pp->bus != SYSFS_BUS_SCSI || pp->getuid != NULL ||
- !has_uid_fallback(pp))) {
+ if (pp->recheck_wwid == RECHECK_WWID_ON && !can_recheck_wwid(pp)) {
pp->recheck_wwid = RECHECK_WWID_OFF;
origin = "(setting: unsupported by device type/config)";
}

View File

@ -0,0 +1,201 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Wed, 2 Apr 2025 19:13:21 -0400
Subject: [PATCH] multipathd: re-add paths skipped because they were offline
When a new device is added by the multipath command, multipathd may know
of other paths that cannot be added to the device because they are
currently offline. Instead of ignoring these paths, multipathd will now
re-add them when they come back online. To do this, it multipathd needs
a new path variable add_when_online, to track devices that could not be
added to an existing multipath device because they were offline. These
paths are handled along with the other uninitialized paths.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
---
libmultipath/libmultipath.version | 5 +++
libmultipath/print.c | 5 ++-
libmultipath/structs.h | 1 +
libmultipath/structs_vec.c | 5 +++
multipathd/main.c | 53 ++++++++++++++++++++++++++++++-
multipathd/multipathd.8 | 4 ++-
6 files changed, 70 insertions(+), 3 deletions(-)
diff --git a/libmultipath/libmultipath.version b/libmultipath/libmultipath.version
index e2cce8c7..46907278 100644
--- a/libmultipath/libmultipath.version
+++ b/libmultipath/libmultipath.version
@@ -313,3 +313,8 @@ global:
cleanup_udev_enumerate_ptr;
cleanup_udev_device_ptr;
} LIBMULTIPATH_9.1.3;
+
+LIBMULTIPATH_9.1.5 {
+global:
+ can_recheck_wwid;
+} LIBMULTIPATH_9.1.4;
diff --git a/libmultipath/print.c b/libmultipath/print.c
index 4552fd43..ff224bc4 100644
--- a/libmultipath/print.c
+++ b/libmultipath/print.c
@@ -584,8 +584,11 @@ snprint_path_serial (struct strbuf *buff, const struct path * pp)
static int
snprint_path_mpp (struct strbuf *buff, const struct path * pp)
{
- if (!pp->mpp)
+ if (!pp->mpp) {
+ if (pp->add_when_online)
+ return append_strbuf_str(buff, "[offline]");
return append_strbuf_str(buff, "[orphan]");
+ }
if (!pp->mpp->alias)
return append_strbuf_str(buff, "[unknown]");
return snprint_str(buff, pp->mpp->alias);
diff --git a/libmultipath/structs.h b/libmultipath/structs.h
index 4bf8c93a..0846e833 100644
--- a/libmultipath/structs.h
+++ b/libmultipath/structs.h
@@ -374,6 +374,7 @@ struct path {
unsigned int dev_loss;
int eh_deadline;
bool can_use_env_uid;
+ bool add_when_online;
/* configlet pointers */
vector hwe;
struct gen_path generic_path;
diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c
index b8e304e0..7086781a 100644
--- a/libmultipath/structs_vec.c
+++ b/libmultipath/structs_vec.c
@@ -319,6 +319,9 @@ void orphan_paths(vector pathvec, struct multipath *mpp, const char *reason)
free_path(pp);
} else
orphan_path(pp, reason);
+ } else if (pp->add_when_online &&
+ strncmp(mpp->wwid, pp->wwid, WWID_SIZE) == 0) {
+ pp->add_when_online = false;
}
}
}
@@ -496,6 +499,8 @@ void sync_paths(struct multipath *mpp, vector pathvec)
found = 0;
vector_foreach_slot(mpp->pg, pgp, j) {
if (find_slot(pgp->paths, (void *)pp) != -1) {
+ if (pp->add_when_online)
+ pp->add_when_online = false;
found = 1;
break;
}
diff --git a/multipathd/main.c b/multipathd/main.c
index c5f458b9..4119ad79 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -558,11 +558,44 @@ pr_register_active_paths(struct multipath *mpp)
}
}
+static void
+save_offline_paths(const struct multipath *mpp, vector offline_paths)
+{
+ unsigned int i, j;
+ struct path *pp;
+ struct pathgroup *pgp;
+
+ vector_foreach_slot (mpp->pg, pgp, i)
+ vector_foreach_slot (pgp->paths, pp, j)
+ if (pp->initialized == INIT_OK && pp->offline)
+ /* ignore failures storing the paths. */
+ store_path(offline_paths, pp);
+}
+
+static void
+handle_orphaned_offline_paths(vector offline_paths)
+{
+ unsigned int i;
+ struct path *pp;
+
+ vector_foreach_slot (offline_paths, pp, i)
+ if (pp->mpp == NULL)
+ pp->add_when_online = true;
+}
+
+static void
+cleanup_reset_vec(struct _vector **v)
+{
+ vector_reset(*v);
+}
+
static int
update_map (struct multipath *mpp, struct vectors *vecs, int new_map)
{
int retries = 3;
char *params __attribute__((cleanup(cleanup_charp))) = NULL;
+ struct _vector offline_paths_vec = { .allocated = 0 };
+ vector offline_paths __attribute__((cleanup(cleanup_reset_vec))) = &offline_paths_vec;
retry:
condlog(4, "%s: updating new map", mpp->alias);
@@ -599,6 +632,9 @@ fail:
return 1;
}
+ if (new_map && retries < 0)
+ save_offline_paths(mpp, offline_paths);
+
if (setup_multipath(vecs, mpp))
return 1;
@@ -609,6 +645,9 @@ fail:
if (mpp->prflag == PRFLAG_SET)
pr_register_active_paths(mpp);
+ if (VECTOR_SIZE(offline_paths) != 0)
+ handle_orphaned_offline_paths(offline_paths);
+
if (retries < 0)
condlog(0, "%s: failed reload in new map update", mpp->alias);
return 0;
@@ -2253,7 +2292,8 @@ check_path (struct vectors * vecs, struct path * pp, unsigned int ticks)
int ret;
if (((pp->initialized == INIT_OK ||
- pp->initialized == INIT_REQUESTED_UDEV) && !pp->mpp) ||
+ pp->initialized == INIT_REQUESTED_UDEV) && !pp->mpp &&
+ !pp->add_when_online) ||
pp->initialized == INIT_REMOVED)
return 0;
@@ -2367,6 +2407,17 @@ check_path (struct vectors * vecs, struct path * pp, unsigned int ticks)
*/
pp->checkint = max_checkint;
}
+ } else if (pp->initialized == INIT_OK && pp->add_when_online &&
+ (newstate == PATH_UP || newstate == PATH_GHOST)) {
+ pp->add_when_online = false;
+ if (can_recheck_wwid(pp) &&
+ check_path_wwid_change(pp)) {
+ condlog(0, "%s: path wwid change detected. Removing", pp->dev);
+ handle_path_wwid_change(pp, vecs);
+ return 0;
+ }
+ ev_add_path(pp, vecs, 1);
+ pp->tick = 1;
}
return 0;
}
diff --git a/multipathd/multipathd.8 b/multipathd/multipathd.8
index d3aa7a73..2ed036d4 100644
--- a/multipathd/multipathd.8
+++ b/multipathd/multipathd.8
@@ -529,7 +529,9 @@ The device serial number.
The device marginal state, either \fImarginal\fR or \fInormal\fR.
.TP
.B %m
-The multipath device that this device is a path of.
+The multipath device that this device is a path of, or \fI[offline]\fR
+if this device could not be added to a device because it is offline or
+\fI[orphan]\fR if it is not part of any multipath device.
.TP
.B %N
The host World Wide Node Name (WWNN) of the device.

View File

@ -0,0 +1,39 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Xose Vazquez Perez <xose.vazquez@gmail.com>
Date: Wed, 29 Sep 2021 18:41:36 +0200
Subject: [PATCH] multipath-tools: add DellEMC/ME4 (PowerVault ME4) to hardware
table
Info from: https://www.delltechnologies.com/asset/fr-fr/products/storage/industry-market/PowerVault_ME4_Series_and_Linux.pdf
Cc: Martin Wilck <mwilck@suse.com>
Cc: Benjamin Marzinski <bmarzins@redhat.com>
Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
Cc: DM-DEVEL ML <dm-devel@redhat.com>
Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmultipath/hwtable.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
index 94012d50..d493a5ce 100644
--- a/libmultipath/hwtable.c
+++ b/libmultipath/hwtable.c
@@ -405,6 +405,15 @@ static struct hwentry default_hw[] = {
.no_path_retry = 3,
.fast_io_fail = 15,
},
+ {
+ /* PowerVault ME4 */
+ .vendor = "DellEMC",
+ .product = "ME4",
+ .pgpolicy = GROUP_BY_PRIO,
+ .prio_name = PRIO_ALUA,
+ .hwhandler = "1 alua",
+ .pgfailback = -FAILBACK_IMMEDIATE,
+ },
/*
* Fujitsu
*/

View File

@ -0,0 +1,32 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Xose Vazquez Perez <xose.vazquez@gmail.com>
Date: Thu, 24 Feb 2022 22:23:34 +0100
Subject: [PATCH] multipath-tools: add HPE as vendor for OPEN- (XP8 arrays)
Cc: Matthias Rudolph <Matthias.Rudolph@hitachivantara.com>
Cc: Martin Wilck <mwilck@suse.com>
Cc: Benjamin Marzinski <bmarzins@redhat.com>
Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
Cc: DM-DEVEL ML <dm-devel@redhat.com>
Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmultipath/hwtable.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
index d493a5ce..d556f25d 100644
--- a/libmultipath/hwtable.c
+++ b/libmultipath/hwtable.c
@@ -476,8 +476,8 @@ static struct hwentry default_hw[] = {
* Maintainer: Matthias Rudolph <Matthias.Rudolph@hitachivantara.com>
*/
{
- /* USP-V, HUS VM, VSP, VSP G1X00 and VSP GX00 families / HP XP */
- .vendor = "(HITACHI|HP)",
+ /* USP-V, HUS VM, VSP, VSP G1X00 and VSP GX00 families / HPE XP */
+ .vendor = "(HITACHI|HP|HPE)",
.product = "^OPEN-",
.pgpolicy = MULTIBUS,
},

View File

@ -0,0 +1,31 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Xose Vazquez Perez <xose.vazquez@gmail.com>
Date: Thu, 24 Feb 2022 22:24:39 +0100
Subject: [PATCH] multipath-tools: add HP/HSVX740 to hwtable
Info from: https://community.hpe.com/hpeb/attachments/hpeb/itrc-248/61618/1/HP_DM_MP_Guide.pdf
Cc: Martin Wilck <mwilck@suse.com>
Cc: Benjamin Marzinski <bmarzins@redhat.com>
Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
Cc: DM-DEVEL ML <dm-devel@redhat.com>
Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmultipath/hwtable.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
index d556f25d..487bce8e 100644
--- a/libmultipath/hwtable.c
+++ b/libmultipath/hwtable.c
@@ -200,7 +200,7 @@ static struct hwentry default_hw[] = {
{
/* SAN Virtualization Services Platform */
.vendor = "HP",
- .product = "HSVX700",
+ .product = "(HSVX700|HSVX740)",
.hwhandler = "1 alua",
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,

View File

@ -0,0 +1,37 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Xose Vazquez Perez <xose.vazquez@gmail.com>
Date: Wed, 23 Feb 2022 23:16:44 +0100
Subject: [PATCH] multipath-tools: add DellEMC/ME5 (PowerVault ME5) to hardware
table
Convert PowerVault ME4 template for all ME series.
[MW] https://dl.dell.com/content/manual51886263-dell-powervault-me5-series-administrator's-guide.pdf
Cc: Martin Wilck <mwilck@suse.com>
Cc: Benjamin Marzinski <bmarzins@redhat.com>
Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
Cc: DM-DEVEL ML <dm-devel@redhat.com>
Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmultipath/hwtable.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
index 487bce8e..e5575a31 100644
--- a/libmultipath/hwtable.c
+++ b/libmultipath/hwtable.c
@@ -406,9 +406,9 @@ static struct hwentry default_hw[] = {
.fast_io_fail = 15,
},
{
- /* PowerVault ME4 */
+ /* PowerVault ME 4/5 families */
.vendor = "DellEMC",
- .product = "ME4",
+ .product = "^ME",
.pgpolicy = GROUP_BY_PRIO,
.prio_name = PRIO_ALUA,
.hwhandler = "1 alua",

View File

@ -0,0 +1,37 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Xose Vazquez Perez <xose.vazquez@gmail.com>
Date: Thu, 5 Dec 2024 23:49:16 +0100
Subject: [PATCH] multipath-tools: add HPE MSA Gen7 (2070/2072) to hwtable
https://support.hpe.com/connect/s/product?kmpmoid=1014856412
Just guessing, confirmation from manufacturer is needed.
Cc: Jon Paul <Jon.Paul@hpe.com>
Cc: Martin Wilck <mwilck@suse.com>
Cc: Benjamin Marzinski <bmarzins@redhat.com>
Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
Cc: DM-DEVEL ML <dm-devel@lists.linux.dev>
Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
Acked-by: Jon Paul <jon.paul@hpe.com>
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmultipath/hwtable.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
index e5575a31..2d359829 100644
--- a/libmultipath/hwtable.c
+++ b/libmultipath/hwtable.c
@@ -189,9 +189,9 @@ static struct hwentry default_hw[] = {
.prio_name = PRIO_ALUA,
},
{
- /* MSA 1040, 1050, 1060, 2040, 2050 and 2060 families */
+ /* MSA 1040, 1050, 1060, 2040, 2050, 2060 and 2070 families */
.vendor = "(HP|HPE)",
- .product = "MSA [12]0[456]0 (SAN|SAS|FC|iSCSI)",
+ .product = "MSA [12]0[4567]0 (SAN|SAS|FC|iSCSI)",
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.no_path_retry = 18,

View File

@ -1,6 +1,6 @@
Name: device-mapper-multipath
Version: 0.8.7
Release: 35%{?dist}.1
Release: 39%{?dist}
Summary: Tools to manage multipath devices using device-mapper
License: GPLv2
URL: http://christophe.varoqui.free.fr/
@ -149,6 +149,16 @@ Patch0136: 0136-multipathd-listen-on-pathname-and-abstract-socket-by.patch
Patch0137: 0137-libmpathcmd-try-both-abstract-and-pathname-sockets.patch
Patch0138: 0138-libmpathcmd-honor-MULTIPATH_SOCKET_NAME-environment-.patch
Patch0139: 0139-multipathd-honor-MULTIPATH_SOCKET_NAME-environment-v.patch
Patch0140: 0140-multipath-clean-up-find_multipaths-value-names.patch
Patch0141: 0141-multipathd-Add-multipathd-man-page-section-about-soc.patch
Patch0142: 0142-multipathd-monitor-new-multipath-dev-even-if-we-can-.patch
Patch0143: 0143-libmultipath-add-helper-function-check_path_wwid_cha.patch
Patch0144: 0144-multipathd-re-add-paths-skipped-because-they-were-of.patch
Patch0145: 0145-multipath-tools-add-DellEMC-ME4-PowerVault-ME4-to-ha.patch
Patch0146: 0146-multipath-tools-add-HPE-as-vendor-for-OPEN-XP8-array.patch
Patch0147: 0147-multipath-tools-add-HP-HSVX740-to-hwtable.patch
Patch0148: 0148-multipath-tools-add-DellEMC-ME5-PowerVault-ME5-to-ha.patch
Patch0149: 0149-multipath-tools-add-HPE-MSA-Gen7-2070-2072-to-hwtabl.patch
# runtime
@ -352,7 +362,33 @@ fi
%{_pkgconfdir}/libdmmp.pc
%changelog
* Tue Mar 4 2025 Benjamin Marzinski <bmarzins@redhat.com> - 0.8.7-35.1
* Mon Jul 14 2025 Benjamin Marzinski <bmarzins@redhat.com> - 0.8.7-39
- Add 0145-multipath-tools-add-DellEMC-ME4-PowerVault-ME4-to-ha.patch
- Add 0146-multipath-tools-add-HPE-as-vendor-for-OPEN-XP8-array.patch
- Add 0147-multipath-tools-add-HP-HSVX740-to-hwtable.patch
- Add 0148-multipath-tools-add-DellEMC-ME5-PowerVault-ME5-to-ha.patch
- Add 0149-multipath-tools-add-HPE-MSA-Gen7-2070-2072-to-hwtabl.patch
* Fixes RHEL-103109 ("Update multipath builtin config to add new
device defaults")
- Resolves: RHEL-103109
* Thu Apr 17 2025 Benjamin Marzinski <bmarzins@redhat.com> - 0.8.7-38
- Add 0142-multipathd-monitor-new-multipath-dev-even-if-we-can-.patch
- Add 0143-libmultipath-add-helper-function-check_path_wwid_cha.patch
- Add 0144-multipathd-re-add-paths-skipped-because-they-were-of.patch
* Fixes RHEL-82534 ("multipathd does not monitor multipath devices
created externally while there are offline paths.")
- Resolves: RHEL-82534
* Thu Mar 13 2025 Benjamin Marzinski <bmarzins@redhat.com> - 0.8.7-37
- Add 0140-multipath-clean-up-find_multipaths-value-names.patch
- Add 0141-multipathd-Add-multipathd-man-page-section-about-soc.patch
* Fixes RHEL-82307 ("There is no man page for RFE: Enable multipathd
to communicate with a process in another network namespace")
- Fix multipath_conf_syntax OSCI test.
- Resolves: RHEL-82307
* Tue Mar 4 2025 Benjamin Marzinski <bmarzins@redhat.com> - 0.8.7-36
- Add 0128-multipath-tools-move-DEFAULT_SOCKET-definition-into-.patch
- Add 0129-multipath-tools-add-helper-mpath_fill_sockaddr__.patch
- Add 0130-libmpathutil-add-support-for-Unix-pathname-sockets.patch
@ -365,9 +401,9 @@ fi
- Add 0137-libmpathcmd-try-both-abstract-and-pathname-sockets.patch
- Add 0138-libmpathcmd-honor-MULTIPATH_SOCKET_NAME-environment-.patch
- Add 0139-multipathd-honor-MULTIPATH_SOCKET_NAME-environment-v.patch
* Fixes RHEL-80352 ("RFE: Enable multipathd to communicate with a
* Fixes RHEL-78758 ("RFE: Enable multipathd to communicate with a
process in another network namespace")
- Resolves: RHEL-80352
- Resolves: RHEL-78758
* Thu Jan 9 2025 Benjamin Marzinski <bmarzins@redhat.com> - 0.8.7-35
- Add 0124-libmultipath-add-missing-assert-to-checkers.c.patch