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:
parent
927b0e7cea
commit
91c21a51b4
@ -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;
|
||||
@ -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); \
|
||||
\
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user