64b1cb0e21
Update Source to 0.7.7 * Previous patches 0001-0009 & 0018 are included in this commit Add upstream patches since 0.7.7 * patches 0001-0012 are from upstream commits since 0.7.7 Add 0015-mpathpersist-add-all_tg_pt-option.patch * add new all_tg_pt multpiath.conf option. posted upstream Add 0016-libmultipath-remove-rbd-code.patch * remove unused rbd code. posted upstream Add 0017-mpathpersist-fix-aptpl-support.patch * add ":aptpl" suffix for reservation_key to fix aptpl support. posted upstream Add 0018-multipath-don-t-check-timestamps-without-a-path.patch * fix multipath null dereference crash. posted upstream Add 0019-libmultipath-fix-detect-alua-corner-case.patch * fix alua detection with retain_hardware_handler set to off. posted upstream Add 0020-multipath-fix-setting-conf-version.patch * multipath wasn't setting the kernel version correctly. posted upstream Add 0028-RH-reset-default-find_mutipaths-value-to-off.patch * default to RHEL7 and older device detection style. Redhat specific, to keep customer experience the same. Rename files * Previous patches 0010-0011 are now patches 0013-0014 * Previous patches 0012-0017 & 0019 are now patches 0021-0027 Modify 0021-RH-fixup-udev-rules-for-redhat.patch * Fix spurious compile warning with redhat compile options
58 lines
2.0 KiB
Diff
58 lines
2.0 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Martin Wilck <mwilck@suse.com>
|
|
Date: Wed, 21 Mar 2018 10:34:19 +0100
|
|
Subject: [PATCH] multipathd: handle errors in uxlsnr as fatal
|
|
|
|
The ppoll() calls of the uxlsnr thread are vital for proper functioning of
|
|
multipathd. If the uxlsnr thread can't open the socket or fails to call ppoll()
|
|
for other reasons, quit the daemon. If we don't do that, multipathd may
|
|
hang in a state where it can't be terminated any more, because the uxlsnr
|
|
thread is responsible for handling all signals. This happens e.g. if
|
|
systemd's multipathd.socket is running in and multipathd is started from
|
|
outside systemd.
|
|
|
|
24f2844 "multipathd: fix signal blocking logic" has made this problem more
|
|
severe. Before that patch, the signals weren't actually blocked in any thread.
|
|
That's not to say 24f2844 was wrong. I still think it's correct, we just
|
|
need this one on top.
|
|
|
|
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
---
|
|
multipathd/uxlsnr.c | 5 +++--
|
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/multipathd/uxlsnr.c b/multipathd/uxlsnr.c
|
|
index cdafd82..6f66666 100644
|
|
--- a/multipathd/uxlsnr.c
|
|
+++ b/multipathd/uxlsnr.c
|
|
@@ -178,7 +178,7 @@ void * uxsock_listen(uxsock_trigger_fn uxsock_trigger, void * trigger_data)
|
|
|
|
if (ux_sock == -1) {
|
|
condlog(1, "could not create uxsock: %d", errno);
|
|
- return NULL;
|
|
+ exit_daemon();
|
|
}
|
|
|
|
pthread_cleanup_push(uxsock_cleanup, (void *)ux_sock);
|
|
@@ -187,7 +187,7 @@ void * uxsock_listen(uxsock_trigger_fn uxsock_trigger, void * trigger_data)
|
|
polls = (struct pollfd *)MALLOC((MIN_POLLS + 1) * sizeof(struct pollfd));
|
|
if (!polls) {
|
|
condlog(0, "uxsock: failed to allocate poll fds");
|
|
- return NULL;
|
|
+ exit_daemon();
|
|
}
|
|
sigfillset(&mask);
|
|
sigdelset(&mask, SIGINT);
|
|
@@ -249,6 +249,7 @@ void * uxsock_listen(uxsock_trigger_fn uxsock_trigger, void * trigger_data)
|
|
|
|
/* something went badly wrong! */
|
|
condlog(0, "uxsock: poll failed with %d", errno);
|
|
+ exit_daemon();
|
|
break;
|
|
}
|
|
|
|
--
|
|
2.7.4
|
|
|