device-mapper-multipath-0.9.9-16

Add 0081-multipathd-make-multipathd-show-status-busy-checker-.patch
  * Fixes RHEL-136405 ("improve Busy checking for multipathd show status
    output")
Add 0082-multipathd-print-path-offline-message-even-without-a.patch
  * Fixes RHEL-133815 ("log_checker_err is not printing messages
    repeatedly for failed path [rhel-10]")
Resolves: RHEL-133815
Resolves: RHEL-136405
This commit is contained in:
Benjamin Marzinski 2026-01-22 22:48:57 -05:00
parent 927b0e7cea
commit 91c21a51b4
3 changed files with 113 additions and 1 deletions

View File

@ -0,0 +1,63 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Wed, 21 Jan 2026 16:03:12 -0500
Subject: [PATCH] multipathd: make "multipathd show status" busy checker better
while uevent_listen() was grabbing new uevents, "multipathd show status"
would still show show busy as "False". Add a check there, to make catch
multipathd's uevent processing earlier. Also, access servicing_uev (as
well as the new variable, adding_uev) atomically, just to make sure that
the compiler doesn't do stupid things trying to optimize them.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
---
libmultipath/uevent.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/libmultipath/uevent.c b/libmultipath/uevent.c
index 32135d7e..7cebf4f3 100644
--- a/libmultipath/uevent.c
+++ b/libmultipath/uevent.c
@@ -64,6 +64,7 @@ static pthread_cond_t *uev_condp = &uev_cond;
static uev_trigger *my_uev_trigger;
static void *my_trigger_data;
static int servicing_uev;
+static int adding_uev; /* uatomic access only */
struct uevent_filter_state {
struct list_head uevq;
@@ -82,13 +83,14 @@ static void reset_filter_state(struct uevent_filter_state *st)
int is_uevent_busy(void)
{
- int empty, servicing;
+ int empty, servicing, adding;
pthread_mutex_lock(uevq_lockp);
empty = list_empty(&uevq);
servicing = servicing_uev;
+ adding = uatomic_read(&adding_uev);
pthread_mutex_unlock(uevq_lockp);
- return (!empty || servicing);
+ return (!empty || servicing || adding);
}
struct uevent * alloc_uevent (void)
@@ -742,6 +744,7 @@ int uevent_listen(struct udev *udev)
int fdcount, events;
struct pollfd ev_poll = { .fd = fd, .events = POLLIN, };
+ uatomic_set(&adding_uev, 0);
fdcount = poll(&ev_poll, 1, -1);
if (fdcount < 0) {
if (errno == EINTR)
@@ -751,6 +754,8 @@ int uevent_listen(struct udev *udev)
err = -errno;
break;
}
+ uatomic_set(&adding_uev, 1);
+
events = uevent_receive_events(fd, &uevlisten_tmp, monitor);
if (events <= 0)
continue;

View File

@ -0,0 +1,36 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Wed, 21 Jan 2026 16:03:13 -0500
Subject: [PATCH] multipathd: print path offline message even without a checker
If a path has a checker selected and is offline, multipathd will print a
"path offline" message. However if the checker isn't selected, for
instance because multipathd was started or reconfigured while the path
was offline, multipathd was not printing the "path offline" message.
Fix that.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
---
multipathd/main.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/multipathd/main.c b/multipathd/main.c
index 0882ef2a..e9165350 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -95,12 +95,11 @@ mpath_pr_event_handle(struct path *pp, unsigned int nr_keys_needed,
#define LOG_MSG(lvl, pp) \
do { \
- if (pp->mpp && checker_selected(&pp->checker) && \
- lvl <= libmp_verbosity) { \
+ if (pp->mpp && lvl <= libmp_verbosity) { \
if (pp->offline) \
condlog(lvl, "%s: %s - path offline", \
pp->mpp->alias, pp->dev); \
- else { \
+ else if (checker_selected(&pp->checker)) { \
const char *__m = \
checker_message(&pp->checker); \
\

View File

@ -1,6 +1,6 @@
Name: device-mapper-multipath
Version: 0.9.9
Release: 15%{?dist}
Release: 16%{?dist}
Summary: Tools to manage multipath devices using device-mapper
License: GPLv2
URL: http://christophe.varoqui.free.fr/
@ -90,6 +90,8 @@ Patch0077: 0077-multipathd-Fix-tracking-of-old-PR-key.patch
Patch0078: 0078-multipathd-Fix-race-while-registering-PR-key.patch
Patch0079: 0079-mpathpersist-Fix-REPORT-CAPABILITIES-output.patch
Patch0080: 0080-multipath-tools-update-NFINIDAT-InfiniBox-config-in-.patch
Patch0081: 0081-multipathd-make-multipathd-show-status-busy-checker-.patch
Patch0082: 0082-multipathd-print-path-offline-message-even-without-a.patch
# runtime
Requires: %{name}-libs = %{version}-%{release}
@ -299,6 +301,17 @@ fi
%{_pkgconfdir}/libdmmp.pc
%changelog
* Thu Jan 22 2026 Benjamin Marzinski <bmarzins@redhat.com> - 0.9.9-16
- Add 0081-multipathd-make-multipathd-show-status-busy-checker-.patch
* Fixes RHEL-136405 ("improve Busy checking for multipathd show status
output")
- Add 0082-multipathd-print-path-offline-message-even-without-a.patch
* Fixes RHEL-133815 ("log_checker_err is not printing messages
repeatedly for failed path [rhel-10]")
- Resolves: RHEL-133815
- Resolves: RHEL-136405
* Wed Nov 19 2025 Benjamin Marzinski <bmarzins@redhat.com> - 0.9.9-15
- Add 0080-multipath-tools-update-NFINIDAT-InfiniBox-config-in-.patch
* Fixes RHEL-128338 ("Update the multipath.conf stanza for Infinidat