Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package multipath-tools for openSUSE:Factory
checked in at 2025-03-06 14:48:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/multipath-tools (Old)
and /work/SRC/openSUSE:Factory/.multipath-tools.new.19136 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "multipath-tools"
Thu Mar 6 14:48:01 2025 rev:170 rq:1250442 version:0.11.0+183+suse.3973293
Changes:
--------
--- /work/SRC/openSUSE:Factory/multipath-tools/multipath-tools.changes
2025-01-25 19:10:28.767733164 +0100
+++
/work/SRC/openSUSE:Factory/.multipath-tools.new.19136/multipath-tools.changes
2025-03-06 14:48:13.840186443 +0100
@@ -1,0 +2,19 @@
+Wed Mar 5 14:33:08 UTC 2025 - Martin Wilck <[email protected]>
+
+- Update to version 0.11.0+183+suse.3973293:
+ * multipathd: fix hang during shutdown with queuing maps
+ (bsc#1238484).
+ This adds multipathd-queueing.service.
+ * multipath-tools: make multipathd listen on a pathname socket
+ (/run/multipathd.socket) besides listening on an abstract socket.
+ This allows connecting to multipathd from a containerized application
+ (gh#opensvc/multipath-tools#111). In client mode, applications
+ linked against libmpathcmd will attempt to connect to the pathname
+ socket first, and to the abstract socket if this fails.
+ The MULTIPATH_SOCKET_NAME environment variable can be used to
+ override the socket name.
+ * multipathd: trigger uevents for blacklisted paths in reconfigure
+ (bsc#1236321)
+ * libmultipath: remove buggy reinstate_paths function
+
+-------------------------------------------------------------------
Old:
----
multipath-tools-0.11.0+164+suse.24eeee7.obscpio
New:
----
multipath-tools-0.11.0+183+suse.3973293.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ multipath-tools.spec ++++++
--- /var/tmp/diff_new_pack.C8LMJk/_old 2025-03-06 14:48:16.568300850 +0100
+++ /var/tmp/diff_new_pack.C8LMJk/_new 2025-03-06 14:48:16.588301689 +0100
@@ -35,7 +35,7 @@
%define libdmmp_version %(echo %{_libdmmp_version} | tr . _)
Name: multipath-tools
-Version: 0.11.0+164+suse.24eeee7
+Version: 0.11.0+183+suse.3973293
Release: 0
Summary: Tools to Manage Multipathed Devices with the device-mapper
License: GPL-2.0-only AND GPL-3.0-or-later
@@ -198,12 +198,12 @@
%pre
[ -f /.buildenv ] && exit 0
-%service_add_pre multipathd.socket multipathd.service
+%service_add_pre multipathd.socket multipathd.service
multipathd-queueing.service
%post
[ -f /.buildenv ] && exit 0
%tmpfiles_create %{_tmpfilesdir}/multipath.conf
-%service_add_post multipathd.socket multipathd.service
+%service_add_post multipathd.socket multipathd.service
multipathd-queueing.service
if [ $1 -eq 1 ]; then
[ ! -x /sbin/modprobe ] || /sbin/modprobe dm_multipath || true
fi
@@ -211,12 +211,12 @@
exit 0
%preun
-%service_del_preun multipathd.service multipathd.socket
+%service_del_preun multipathd.service multipathd.socket
multipathd-queueing.service
%postun
%{?regenerate_initrd_post}
%service_del_postun multipathd.service
-%service_del_postun_without_restart multipathd.socket
+%service_del_postun_without_restart multipathd.socket
multipathd-queueing.service
%posttrans
%{?regenerate_initrd_posttrans}
@@ -237,6 +237,7 @@
/usr/sbin/rcmultipathd
%endif
%{_unitdir}/multipathd.service
+%{_unitdir}/multipathd-queueing.service
%{_unitdir}/multipathd.socket
%if 0%{?suse_version} < 1550 && 0%{?sle_version} < 150300
%dir /usr/lib/modules-load.d
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.C8LMJk/_old 2025-03-06 14:48:16.956317122 +0100
+++ /var/tmp/diff_new_pack.C8LMJk/_new 2025-03-06 14:48:16.992318632 +0100
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param
name="url">https://github.com/openSUSE/multipath-tools.git</param>
- <param
name="changesrevision">24eeee77ef43bd4fee19f1eca07036874cda2859</param></service></servicedata>
+ <param
name="changesrevision">397329364d2e192b2538a9157cac3a77bd40fac0</param></service></servicedata>
(No newline at EOF)
++++++ multipath-tools-0.11.0+164+suse.24eeee7.obscpio ->
multipath-tools-0.11.0+183+suse.3973293.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/.github/actions/spelling/expect.txt
new/multipath-tools-0.11.0+183+suse.3973293/.github/actions/spelling/expect.txt
---
old/multipath-tools-0.11.0+164+suse.24eeee7/.github/actions/spelling/expect.txt
2025-01-24 15:03:15.000000000 +0100
+++
new/multipath-tools-0.11.0+183+suse.3973293/.github/actions/spelling/expect.txt
2025-03-04 23:53:22.000000000 +0100
@@ -142,6 +142,7 @@
Nosync
nvme
OBJDEPS
+oneshot
ontap
OOM
opensvc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/.github/workflows/multiarch-stable.yaml
new/multipath-tools-0.11.0+183+suse.3973293/.github/workflows/multiarch-stable.yaml
---
old/multipath-tools-0.11.0+164+suse.24eeee7/.github/workflows/multiarch-stable.yaml
2025-01-24 15:03:15.000000000 +0100
+++
new/multipath-tools-0.11.0+183+suse.3973293/.github/workflows/multiarch-stable.yaml
2025-03-04 23:53:22.000000000 +0100
@@ -46,7 +46,9 @@
- name: checkout
uses: actions/checkout@v4
- name: enable foreign arch
- uses: dbhi/qus/action@main
+ uses: docker/setup-qemu-action@v2
+ with:
+ image: tonistiigi/binfmt:latest
- name: compile and run unit tests
uses: mosteo-actions/docker-run@v1
with:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/.github/workflows/multiarch.yaml
new/multipath-tools-0.11.0+183+suse.3973293/.github/workflows/multiarch.yaml
---
old/multipath-tools-0.11.0+164+suse.24eeee7/.github/workflows/multiarch.yaml
2025-01-24 15:03:15.000000000 +0100
+++
new/multipath-tools-0.11.0+183+suse.3973293/.github/workflows/multiarch.yaml
2025-03-04 23:53:22.000000000 +0100
@@ -51,7 +51,9 @@
- name: checkout
uses: actions/checkout@v4
- name: enable foreign arch
- uses: dbhi/qus/action@main
+ uses: docker/setup-qemu-action@v2
+ with:
+ image: tonistiigi/binfmt:latest
- name: compile and run unit tests
uses: mosteo-actions/docker-run@v1
with:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/.github/workflows/sles.yaml
new/multipath-tools-0.11.0+183+suse.3973293/.github/workflows/sles.yaml
--- old/multipath-tools-0.11.0+164+suse.24eeee7/.github/workflows/sles.yaml
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/.github/workflows/sles.yaml
2025-03-04 23:53:22.000000000 +0100
@@ -52,7 +52,9 @@
- name: checkout
uses: actions/checkout@v1
- name: enable foreign arch
- run: sudo docker run --rm --privileged multiarch/qemu-user-static
--reset -p yes
+ uses: docker/setup-qemu-action@v2
+ with:
+ image: tonistiigi/binfmt:latest
- name: build and run unit tests
# Github actions doesn't support referencing docker images with
# context variables. Workaround: use mosteo-actions/docker-run action
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/multipath-tools-0.11.0+164+suse.24eeee7/.gitignore
new/multipath-tools-0.11.0+183+suse.3973293/.gitignore
--- old/multipath-tools-0.11.0+164+suse.24eeee7/.gitignore 2025-01-24
15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/.gitignore 2025-03-04
23:53:22.000000000 +0100
@@ -24,6 +24,7 @@
multipathd/multipathd.8
multipathd/multipathc
multipathd/multipathd.service
+multipathd/multipathd.socket
mpathpersist/mpathpersist
mpathpersist/mpathpersist.8
abi.tar.gz
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/multipath-tools-0.11.0+164+suse.24eeee7/Makefile.inc
new/multipath-tools-0.11.0+183+suse.3973293/Makefile.inc
--- old/multipath-tools-0.11.0+164+suse.24eeee7/Makefile.inc 2025-01-24
15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/Makefile.inc 2025-03-04
23:53:22.000000000 +0100
@@ -79,6 +79,9 @@
kernel_incdir := /usr/include
sysdir_bin := $(sys_execprefix)bin
+abstract_socket := @/org/kernel/linux/storage/multipathd
+pathname_socket := /run/multipathd.socket
+
ifeq ($(V),)
Q := @
# make's "Entering directory" messages are confusing in parallel mode
@@ -114,8 +117,11 @@
-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
-CFLAGS := -std=gnu99 $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \
+ -DEXTRAVERSION=\"$(EXTRAVERSION)\" \
+ -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
BIN_CFLAGS := -fPIE -DPIE
LIB_CFLAGS := -fPIC
@@ -167,4 +173,6 @@
-e 's:@SYSDIR_BIN@:'$(sysdir_bin)': g' \
-e 's:@RUNTIME_DIR@:'$(runtimedir)':g' \
-e 's/@MODPROBE_UNIT@/'$(MODPROBE_UNIT)'/g' \
+ -e 's,@ABSTRACT_SOCKET@,'$(abstract_socket)',g' \
+ -e 's,@PATHNAME_SOCKET@,'$(pathname_socket)',g' \
$< >$@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/create-config.mk
new/multipath-tools-0.11.0+183+suse.3973293/create-config.mk
--- old/multipath-tools-0.11.0+164+suse.24eeee7/create-config.mk
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/create-config.mk
2025-03-04 23:53:22.000000000 +0100
@@ -157,6 +157,18 @@
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
@@ -179,6 +191,8 @@
@echo "ERROR_DISCARDED_QUALIFIERS := $(call
TEST_CC_OPTION,-Werror=discarded-qualifiers,)" >>$@
@echo "WNOCLOBBERED := $(call TEST_CC_OPTION,-Wno-clobbered
-Wno-error=clobbered,)" >>$@
@echo "WFORMATOVERFLOW := $(call TEST_CC_OPTION,-Wformat-overflow=2,)"
>>$@
+ @echo "WSTRINGOP_TRUNCATION := $(call
TEST_CC_OPTION,-Wstringop-truncation)" >>$@
@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)" >>$@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/libmpathcmd/mpath_cmd.c
new/multipath-tools-0.11.0+183+suse.3973293/libmpathcmd/mpath_cmd.c
--- old/multipath-tools-0.11.0+164+suse.24eeee7/libmpathcmd/mpath_cmd.c
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/libmpathcmd/mpath_cmd.c
2025-03-04 23:53:22.000000000 +0100
@@ -20,15 +20,18 @@
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
+#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <poll.h>
+#include <stddef.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#include "mpath_cmd.h"
+#include "mpath_fill_sockaddr.c"
/*
* keep reading until its all read
@@ -100,15 +103,11 @@
size_t len;
struct sockaddr_un addr;
int flags = 0;
+ const char *const names[2] = {PATHNAME_SOCKET, ABSTRACT_SOCKET};
+ int name_idx = 0;
+ const char *env_name = getenv("MULTIPATH_SOCKET_NAME"), *name;
- memset(&addr, 0, sizeof(addr));
- addr.sun_family = AF_LOCAL;
- addr.sun_path[0] = '\0';
- strncpy(&addr.sun_path[1], DEFAULT_SOCKET, sizeof(addr.sun_path) - 1);
- len = strlen(DEFAULT_SOCKET) + 1 + sizeof(sa_family_t);
- if (len > sizeof(struct sockaddr_un))
- len = sizeof(struct sockaddr_un);
-
+retry:
fd = socket(AF_LOCAL, SOCK_STREAM, 0);
if (fd == -1)
return -1;
@@ -119,12 +118,18 @@
(void)fcntl(fd, F_SETFL, flags|O_NONBLOCK);
}
+ name = env_name ? env_name : names[name_idx];
+ len = mpath_fill_sockaddr__(&addr, name);
if (connect(fd, (struct sockaddr *)&addr, len) == -1) {
int err = errno;
close(fd);
- errno = err;
- return -1;
+ if (name != env_name && ++name_idx == 1)
+ goto retry;
+ else {
+ errno = err;
+ return -1;
+ }
}
if (nonblocking && flags != -1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/libmpathcmd/mpath_cmd.h
new/multipath-tools-0.11.0+183+suse.3973293/libmpathcmd/mpath_cmd.h
--- old/multipath-tools-0.11.0+164+suse.24eeee7/libmpathcmd/mpath_cmd.h
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/libmpathcmd/mpath_cmd.h
2025-03-04 23:53:22.000000000 +0100
@@ -30,7 +30,6 @@
extern "C" {
#endif
-#define DEFAULT_SOCKET "/org/kernel/linux/storage/multipathd"
#define DEFAULT_REPLY_TIMEOUT 4000
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/libmpathcmd/mpath_fill_sockaddr.c
new/multipath-tools-0.11.0+183+suse.3973293/libmpathcmd/mpath_fill_sockaddr.c
---
old/multipath-tools-0.11.0+164+suse.24eeee7/libmpathcmd/mpath_fill_sockaddr.c
1970-01-01 01:00:00.000000000 +0100
+++
new/multipath-tools-0.11.0+183+suse.3973293/libmpathcmd/mpath_fill_sockaddr.c
2025-03-04 23:53:22.000000000 +0100
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2025 SUSE LLC
+ * SPDX-license-identifier: LGPL-2.1-or-newer
+ */
+
+static size_t mpath_fill_sockaddr__(struct sockaddr_un *addr, const char *name)
+{
+ size_t len;
+
+ addr->sun_family = AF_LOCAL;
+
+ if (name[0] != '@') {
+ /* Pathname socket. This should be NULL-terminated. */
+ strncpy(&addr->sun_path[0], name, sizeof(addr->sun_path) - 1);
+ addr->sun_path[sizeof(addr->sun_path) - 1] = '\0';
+ len = offsetof(struct sockaddr_un, sun_path) + strlen(name) + 1;
+ } else {
+ addr->sun_path[0] = '\0';
+ /*
+ * The abstract socket's name doesn't need to be NULL
terminated.
+ * Actually, a trailing NULL would be considered part of the
socket name.
+ */
+#pragma GCC diagnostic push
+#if WSTRINGOP_TRUNCATION
+#pragma GCC diagnostic ignored "-Wstringop-truncation"
+#endif
+ strncpy(&addr->sun_path[1], &name[1], sizeof(addr->sun_path) -
1);
+#pragma GCC diagnostic pop
+ len = offsetof(struct sockaddr_un, sun_path) + strlen(name);
+ }
+ return len > sizeof(*addr) ? sizeof(*addr) : len;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/libmpathutil/uxsock.c
new/multipath-tools-0.11.0+183+suse.3973293/libmpathutil/uxsock.c
--- old/multipath-tools-0.11.0+164+suse.24eeee7/libmpathutil/uxsock.c
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/libmpathutil/uxsock.c
2025-03-04 23:53:22.000000000 +0100
@@ -6,12 +6,15 @@
*/
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <unistd.h>
#include <stdarg.h>
+#include <stddef.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/socket.h>
+#include <sys/stat.h>
#include <sys/un.h>
#include <poll.h>
#include <signal.h>
@@ -33,6 +36,8 @@
static int _recv_packet(int fd, char **buf, unsigned int timeout,
ssize_t limit);
+#include "../libmpathcmd/mpath_fill_sockaddr.c"
+
/*
* create a unix domain socket and start listening on it
* return a file descriptor open on the socket
@@ -41,43 +46,33 @@
{
int fd;
size_t len;
-#ifdef USE_SYSTEMD
- int num;
-#endif
struct sockaddr_un addr;
-#ifdef USE_SYSTEMD
- num = sd_listen_fds(0);
- if (num > 1) {
- condlog(3, "sd_listen_fds returned %d fds", num);
- return -1;
- } else if (num == 1) {
- fd = SD_LISTEN_FDS_START + 0;
- condlog(3, "using fd %d from sd_listen_fds", fd);
- return fd;
- }
-#endif
+ /* This is after the PID check, so unlinking should be fine */
+ if (name[0] != '@' && unlink(name) == -1 && errno != ENOENT)
+ condlog(1, "Failed to unlink %s", name);
+
fd = socket(AF_LOCAL, SOCK_STREAM, 0);
if (fd == -1) {
condlog(3, "Couldn't create ux_socket, error %d", errno);
return -1;
}
- memset(&addr, 0, sizeof(addr));
- addr.sun_family = AF_LOCAL;
- addr.sun_path[0] = '\0';
- len = strlen(name) + 1;
- if (len >= sizeof(addr.sun_path))
- len = sizeof(addr.sun_path) - 1;
- memcpy(&addr.sun_path[1], name, len);
-
- len += sizeof(sa_family_t);
+ len = mpath_fill_sockaddr__(&addr, name);
if (bind(fd, (struct sockaddr *)&addr, len) == -1) {
condlog(3, "Couldn't bind to ux_socket, error %d", errno);
close(fd);
return -1;
}
+ /*
+ * Socket needs to have rw permissions for everone.
+ * SO_PEERCRED makes sure that only root can modify things.
+ */
+ if (name[0] != '@' &&
+ chmod(name, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH |
S_IWOTH) == -1)
+ condlog(3, "failed to set permissions on %s: %s", name,
strerror(errno));
+
if (listen(fd, 10) == -1) {
condlog(3, "Couldn't listen to ux_socket, error %d", errno);
close(fd);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/checkers/tur.c
new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/checkers/tur.c
--- old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/checkers/tur.c
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/checkers/tur.c
2025-03-04 23:53:22.000000000 +0100
@@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/configure.c
new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/configure.c
--- old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/configure.c
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/configure.c
2025-03-04 23:53:22.000000000 +0100
@@ -805,35 +805,6 @@
return;
}
-int reinstate_paths(struct multipath *mpp)
-{
- int i, j;
- struct pathgroup * pgp;
- struct path * pp;
-
- if (!mpp->pg)
- return 0;
-
- vector_foreach_slot (mpp->pg, pgp, i) {
- if (!pgp->paths)
- continue;
-
- vector_foreach_slot (pgp->paths, pp, j) {
- if (pp->state != PATH_UP &&
- (pgp->status == PGSTATE_DISABLED ||
- pgp->status == PGSTATE_ACTIVE))
- continue;
-
- if (pp->dmstate == PSTATE_FAILED) {
- if (dm_reinstate_path(mpp->alias, pp->dev_t))
- condlog(0, "%s: error reinstating",
- pp->dev);
- }
- }
- }
- return 0;
-}
-
static int
lock_multipath (struct multipath * mpp, int lock)
{
@@ -944,12 +915,6 @@
case ACT_SWITCHPG:
case ACT_SWITCHPG_RENAME:
dm_switchgroup(mpp->alias, mpp->bestpg);
- /*
- * we may have avoided reinstating paths because there where in
- * active or disabled PG. Now that the topology has changed,
- * retry.
- */
- reinstate_paths(mpp);
return DOMAP_EXIST;
case ACT_CREATE:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/configure.h
new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/configure.h
--- old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/configure.h
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/configure.h
2025-03-04 23:53:22.000000000 +0100
@@ -56,7 +56,6 @@
void select_action (struct multipath *mpp, const struct vector_s *curmp,
int force_reload);
int domap (struct multipath * mpp, char * params, int is_daemon);
-int reinstate_paths (struct multipath *mpp);
int coalesce_paths (struct vectors *vecs, vector curmp, char * refwwid, int
force_reload, enum mpath_cmds cmd);
int get_refwwid (enum mpath_cmds cmd, const char *dev, enum devtypes dev_type,
vector pathvec, char **wwid);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/defaults.h
new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/defaults.h
--- old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/defaults.h
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/defaults.h
2025-03-04 23:53:22.000000000 +0100
@@ -67,7 +67,6 @@
#define DEV_LOSS_TMO_UNSET 0U
#define MAX_DEV_LOSS_TMO UINT_MAX
#define DEFAULT_PIDFILE RUNTIME_DIR "/multipathd.pid"
-#define DEFAULT_SOCKET "/org/kernel/linux/storage/multipathd"
#define DEFAULT_BINDINGS_FILE STATE_DIR "/bindings"
#define DEFAULT_WWIDS_FILE STATE_DIR "/wwids"
#define DEFAULT_PRKEYS_FILE STATE_DIR "/prkeys"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/discovery.h
new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/discovery.h
--- old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/discovery.h
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/discovery.h
2025-03-04 23:53:22.000000000 +0100
@@ -74,6 +74,7 @@
DI_BLACKLIST__,
DI_NOIO__,
DI_NOFALLBACK__,
+ DI_DISCOVERY__,
};
#define DI_SYSFS (1 << DI_SYSFS__)
@@ -84,6 +85,7 @@
#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_IOCTL | DI_CHECKER | DI_PRIO | DI_WWID)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/libmultipath.version
new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/libmultipath.version
---
old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/libmultipath.version
2025-01-24 15:03:15.000000000 +0100
+++
new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/libmultipath.version
2025-03-04 23:53:22.000000000 +0100
@@ -153,7 +153,6 @@
print_all_paths;
print_foreign_topology;
print_multipath_topology__;
- reinstate_paths;
remember_wwid;
remove_feature;
remove_map;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/lock.h
new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/lock.h
--- old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/lock.h
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/lock.h
2025-03-04 23:53:22.000000000 +0100
@@ -2,6 +2,7 @@
#define LOCK_H_INCLUDED
#include <pthread.h>
+#include <urcu.h>
#include <urcu/uatomic.h>
#include <stdbool.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/structs_vec.c
new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/structs_vec.c
--- old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/structs_vec.c
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/structs_vec.c
2025-03-04 23:53:22.000000000 +0100
@@ -107,6 +107,9 @@
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;
@@ -193,7 +196,8 @@
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--);
@@ -726,7 +730,7 @@
}
void
-sync_map_state(struct multipath *mpp)
+sync_map_state(struct multipath *mpp, bool reinstate_only)
{
struct pathgroup *pgp;
struct path *pp;
@@ -748,7 +752,8 @@
pp->dmstate == PSTATE_UNDEF) &&
(pp->state == PATH_UP || pp->state == PATH_GHOST))
dm_reinstate_path(mpp->alias, pp->dev_t);
- else if ((pp->dmstate == PSTATE_ACTIVE ||
+ else if (!reinstate_only &&
+ (pp->dmstate == PSTATE_ACTIVE ||
pp->dmstate == PSTATE_UNDEF) &&
(pp->state == PATH_DOWN ||
pp->state == PATH_SHAKY)) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/structs_vec.h
new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/structs_vec.h
--- old/multipath-tools-0.11.0+164+suse.24eeee7/libmultipath/structs_vec.h
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/libmultipath/structs_vec.h
2025-03-04 23:53:22.000000000 +0100
@@ -27,7 +27,7 @@
void remove_map_by_alias(const char *alias, struct vectors * vecs);
void remove_maps (struct vectors * vecs);
-void sync_map_state (struct multipath *);
+void sync_map_state (struct multipath *mpp, bool reinstate_only);
struct multipath * add_map_with_path (struct vectors * vecs,
struct path * pp, int add_vec,
const struct multipath *current_mpp);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/multipath/main.c
new/multipath-tools-0.11.0+183+suse.3973293/multipath/main.c
--- old/multipath-tools-0.11.0+164+suse.24eeee7/multipath/main.c
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/multipath/main.c
2025-03-04 23:53:22.000000000 +0100
@@ -210,7 +210,7 @@
print_multipath_topology(mpp, libmp_verbosity);
if (cmd == CMD_CREATE)
- reinstate_paths(mpp);
+ sync_map_state(mpp, true);
}
if (cmd == CMD_LIST_SHORT || cmd == CMD_LIST_LONG)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/multipathd/Makefile
new/multipath-tools-0.11.0+183+suse.3973293/multipathd/Makefile
--- old/multipath-tools-0.11.0+164+suse.24eeee7/multipathd/Makefile
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/multipathd/Makefile
2025-03-04 23:53:22.000000000 +0100
@@ -41,7 +41,7 @@
OBJS += fpin_handlers.o
endif
-all : $(EXEC) $(CLI) $(MANPAGES) $(EXEC).service
+all : $(EXEC) $(CLI) $(MANPAGES) $(EXEC).service $(EXEC).socket
$(EXEC)-queueing.service
$(EXEC): $(OBJS) $(multipathdir)/libmultipath.so $(mpathcmddir)/libmpathcmd.so
@echo building $@ because of $?
@@ -64,6 +64,7 @@
ifdef SYSTEMD
$(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(unitdir)
$(Q)$(INSTALL_PROGRAM) -m 644 $(EXEC).service $(DESTDIR)$(unitdir)
+ $(Q)$(INSTALL_PROGRAM) -m 644 $(EXEC)-queueing.service
$(DESTDIR)$(unitdir)
$(Q)$(INSTALL_PROGRAM) -m 644 $(EXEC).socket $(DESTDIR)$(unitdir)
endif
$(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)/man8
@@ -74,11 +75,12 @@
$(Q)$(RM) $(DESTDIR)$(bindir)/$(EXEC) $(DESTDIR)$(bindir)/$(CLI)
$(Q)$(RM) $(DESTDIR)$(mandir)/man8/$(EXEC).8
$(Q)$(RM) $(DESTDIR)$(mandir)/man8/$(CLI).8
+ $(Q)$(RM) $(DESTDIR)$(unitdir)/$(EXEC)-queueing.service
$(Q)$(RM) $(DESTDIR)$(unitdir)/$(EXEC).service
$(Q)$(RM) $(DESTDIR)$(unitdir)/$(EXEC).socket
clean: dep_clean
- $(Q)$(RM) core *.o $(EXEC) $(CLI) $(MANPAGES) $(EXEC).service
+ $(Q)$(RM) core *.o $(EXEC) $(CLI) $(MANPAGES) $(EXEC).service
$(EXEC)-queueing.service $(EXEC).socket
include $(wildcard $(OBJS:.o=.d) $(CLI_OBJS:.o=.d))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/multipathd/main.c
new/multipath-tools-0.11.0+183+suse.3973293/multipathd/main.c
--- old/multipath-tools-0.11.0+164+suse.24eeee7/multipathd/main.c
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/multipathd/main.c
2025-03-04 23:53:22.000000000 +0100
@@ -688,7 +688,7 @@
if (setup_multipath(vecs, mpp))
return 1;
- sync_map_state(mpp);
+ sync_map_state(mpp, false);
if (mpp->prflag != PRFLAG_SET)
update_map_pr(mpp);
@@ -806,7 +806,7 @@
struct multipath *mpp;
vector_foreach_slot (mpvec, mpp, i)
- sync_map_state(mpp);
+ sync_map_state(mpp, false);
}
int
@@ -1344,7 +1344,7 @@
if (setup_multipath(vecs, mpp))
goto fail; /* if setup_multipath fails, it removes the map */
- sync_map_state(mpp);
+ sync_map_state(mpp, false);
if (retries >= 0) {
if (start_waiter)
@@ -1464,7 +1464,7 @@
strlcpy(devt, pp->dev_t, sizeof(devt));
if (setup_multipath(vecs, mpp))
return REMOVE_PATH_MAP_ERROR;
- sync_map_state(mpp);
+ sync_map_state(mpp, false);
if (retval == REMOVE_PATH_SUCCESS)
condlog(2, "%s: path removed from map %s",
@@ -1558,7 +1558,7 @@
out:
if (setup_multipath(vecs, mpp) != 0)
return 2;
- sync_map_state(mpp);
+ sync_map_state(mpp, false);
return ret;
}
@@ -1755,7 +1755,7 @@
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--;
}
@@ -1863,17 +1863,55 @@
pthread_cleanup_pop(1);
return NULL;
}
+
+#ifdef USE_SYSTEMD
+static int get_systemd_sockets(long *ux_sock)
+{
+ int num = sd_listen_fds(0);
+
+ if (num > 2) {
+ condlog(3, "sd_listen_fds returned %d fds", num);
+ return -1;
+ } else if (num == 2) {
+ ux_sock[0] = SD_LISTEN_FDS_START + 0;
+ ux_sock[1] = SD_LISTEN_FDS_START + 1;
+ condlog(3, "using fd %ld and %ld from sd_listen_fds",
ux_sock[0], ux_sock[1]);
+ } else if (num == 1) {
+ ux_sock[0] = SD_LISTEN_FDS_START + 0;
+ condlog(3, "using fd %ld from sd_listen_fds", ux_sock[0]);
+ }
+ return num;
+}
+#else
+static int get_systemd_sockets(long *ux_sock __attribute__((unused)))
+{
+ return 0;
+}
+#endif
+
+
static void *
uxlsnrloop (void * ap)
{
- long ux_sock;
+ long ux_sock[2] = {-1, -1};
+ int num;
+ const char *env_name = getenv("MULTIPATH_SOCKET_NAME");
pthread_cleanup_push(rcu_unregister, NULL);
rcu_register_thread();
- ux_sock = ux_socket_listen(DEFAULT_SOCKET);
- if (ux_sock == -1) {
- condlog(1, "could not create uxsock: %d", errno);
+ num = get_systemd_sockets(ux_sock);
+ if (num < 1 && env_name != NULL) {
+ ux_sock[0] = ux_socket_listen(env_name);
+ num = 1;
+ }
+ if (num < 1) {
+ ux_sock[0] = ux_socket_listen(ABSTRACT_SOCKET);
+ ux_sock[1] = ux_socket_listen(PATHNAME_SOCKET);
+ num = 2;
+ }
+ if (ux_sock[0] == -1 && ux_sock[1] == -1) {
+ condlog(1, "could not create sockets: %d", errno);
exit_daemon();
goto out;
}
@@ -1898,7 +1936,7 @@
== DAEMON_CONFIGURE)
handle_signals(false);
- uxsock_listen(ux_sock, ap);
+ uxsock_listen(num, ux_sock, ap);
out_sock:
pthread_cleanup_pop(1); /* uxsock_cleanup */
@@ -2236,7 +2274,7 @@
ret = 1;
if (setup_multipath(vecs, mpp) != 0)
return 2;
- sync_map_state(mpp);
+ sync_map_state(mpp, false);
return ret;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/multipathd/multipathd-queueing.service.in
new/multipath-tools-0.11.0+183+suse.3973293/multipathd/multipathd-queueing.service.in
---
old/multipath-tools-0.11.0+164+suse.24eeee7/multipathd/multipathd-queueing.service.in
1970-01-01 01:00:00.000000000 +0100
+++
new/multipath-tools-0.11.0+183+suse.3973293/multipathd/multipathd-queueing.service.in
2025-03-04 23:53:22.000000000 +0100
@@ -0,0 +1,9 @@
+[Unit]
+Description=Enable queuing for multipath maps
+After=local-fs.target remote-fs.target multipathd.service
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/bin/true
+ExecStop=@BINDIR@/multipathd disablequeueing maps
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/multipathd/multipathd.service.in
new/multipath-tools-0.11.0+183+suse.3973293/multipathd/multipathd.service.in
---
old/multipath-tools-0.11.0+164+suse.24eeee7/multipathd/multipathd.service.in
2025-01-24 15:03:15.000000000 +0100
+++
new/multipath-tools-0.11.0+183+suse.3973293/multipathd/multipathd.service.in
2025-03-04 23:53:22.000000000 +0100
@@ -2,7 +2,7 @@
Description=Device-Mapper Multipath Device Controller
Before=lvm2-activation-early.service
Before=local-fs-pre.target blk-availability.service shutdown.target
-Wants=systemd-udevd-kernel.socket @MODPROBE_UNIT@
+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
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/multipathd/multipathd.socket
new/multipath-tools-0.11.0+183+suse.3973293/multipathd/multipathd.socket
--- old/multipath-tools-0.11.0+164+suse.24eeee7/multipathd/multipathd.socket
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/multipathd/multipathd.socket
1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
-[Unit]
-Description=multipathd control socket
-DefaultDependencies=no
-ConditionKernelCommandLine=!nompath
-ConditionKernelCommandLine=!multipath=off
-ConditionVirtualization=!container
-Before=sockets.target
-
-[Socket]
-ListenStream=@/org/kernel/linux/storage/multipathd
-
-[Install]
-# Socket activation for multipathd is disabled by default.
-# Activate it here if you find it useful.
-# WantedBy=sockets.target
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/multipathd/multipathd.socket.in
new/multipath-tools-0.11.0+183+suse.3973293/multipathd/multipathd.socket.in
--- old/multipath-tools-0.11.0+164+suse.24eeee7/multipathd/multipathd.socket.in
1970-01-01 01:00:00.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/multipathd/multipathd.socket.in
2025-03-04 23:53:22.000000000 +0100
@@ -0,0 +1,16 @@
+[Unit]
+Description=multipathd control socket
+DefaultDependencies=no
+ConditionKernelCommandLine=!nompath
+ConditionKernelCommandLine=!multipath=off
+ConditionVirtualization=!container
+Before=sockets.target
+
+[Socket]
+ListenStream=@ABSTRACT_SOCKET@
+ListenStream=@PATHNAME_SOCKET@
+
+[Install]
+# Socket activation for multipathd is disabled by default.
+# Activate it here if you find it useful.
+# WantedBy=sockets.target
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/multipathd/uxlsnr.c
new/multipath-tools-0.11.0+183+suse.3973293/multipathd/uxlsnr.c
--- old/multipath-tools-0.11.0+164+suse.24eeee7/multipathd/uxlsnr.c
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/multipathd/uxlsnr.c
2025-03-04 23:53:22.000000000 +0100
@@ -69,7 +69,8 @@
/* Indices for array of poll fds */
enum {
- POLLFD_UX = 0,
+ POLLFD_UX1 = 0,
+ POLLFD_UX2,
POLLFD_NOTIFY,
POLLFD_IDLE,
POLLFDS_BASE,
@@ -164,9 +165,10 @@
{
struct client *client_loop;
struct client *client_tmp;
- long ux_sock = (long)arg;
+ long *ux_sock = (long *)arg;
- close(ux_sock);
+ close(ux_sock[0]);
+ close(ux_sock[1]);
close(notify_fd);
list_for_each_entry_safe(client_loop, client_tmp, &clients, node) {
@@ -614,15 +616,24 @@
/*
* entry point
*/
-void *uxsock_listen(long ux_sock, void *trigger_data)
+void *uxsock_listen(int n_socks, long *ux_sock_in, void *trigger_data)
{
sigset_t mask;
int max_pfds = MIN_POLLS + POLLFDS_BASE;
+ long ux_sock[2] = {-1, -1};
/* conf->sequence_nr will be 1 when uxsock_listen is first called */
unsigned int sequence_nr = 0;
struct watch_descriptors wds = { .conf_wd = -1, .dir_wd = -1, .mp_wd =
-1, };
struct vectors *vecs = trigger_data;
+ if (n_socks < 1 || n_socks > 2) {
+ condlog(0, "uxsock: unsupported number of socket fds");
+ exit_daemon();
+ return NULL;
+ } else if (n_socks == 2)
+ ux_sock[1] = ux_sock_in[1];
+ ux_sock[0] = ux_sock_in[0];
+
condlog(3, "uxsock: startup listener");
polls = calloc(1, max_pfds * sizeof(*polls));
if (!polls) {
@@ -673,8 +684,10 @@
}
}
if (num_clients < MAX_CLIENTS) {
- polls[POLLFD_UX].fd = ux_sock;
- polls[POLLFD_UX].events = POLLIN;
+ polls[POLLFD_UX1].fd = ux_sock[0];
+ polls[POLLFD_UX1].events = POLLIN;
+ polls[POLLFD_UX2].fd = ux_sock[1];
+ polls[POLLFD_UX2].events = POLLIN;
} else {
/*
* New clients can't connect, num_clients won't grow
@@ -682,7 +695,7 @@
*/
condlog(1, "%s: max client connections reached, pausing
polling",
__func__);
- polls[POLLFD_UX].fd = -1;
+ polls[POLLFD_UX1].fd = polls[POLLFD_UX2].fd = -1;
}
reset_watch(notify_fd, &wds, &sequence_nr);
@@ -766,8 +779,11 @@
handle_signals(true);
/* see if we got a new client */
- if (polls[POLLFD_UX].revents & POLLIN) {
- new_client(ux_sock);
+ if (polls[POLLFD_UX1].revents & POLLIN) {
+ new_client(ux_sock[0]);
+ }
+ if (polls[POLLFD_UX2].revents & POLLIN) {
+ new_client(ux_sock[1]);
}
/* handle inotify events on config files */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/multipath-tools-0.11.0+164+suse.24eeee7/multipathd/uxlsnr.h
new/multipath-tools-0.11.0+183+suse.3973293/multipathd/uxlsnr.h
--- old/multipath-tools-0.11.0+164+suse.24eeee7/multipathd/uxlsnr.h
2025-01-24 15:03:15.000000000 +0100
+++ new/multipath-tools-0.11.0+183+suse.3973293/multipathd/uxlsnr.h
2025-03-04 23:53:22.000000000 +0100
@@ -5,7 +5,6 @@
bool waiting_clients(void);
void uxsock_cleanup(void *arg);
-void *uxsock_listen(long ux_sock,
- void * trigger_data);
+void *uxsock_listen(int n_socks, long *ux_sock, void *trigger_data);
#endif
++++++ multipath-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.C8LMJk/_old 2025-03-06 14:48:19.152409217 +0100
+++ /var/tmp/diff_new_pack.C8LMJk/_new 2025-03-06 14:48:19.200411231 +0100
@@ -1,5 +1,5 @@
name: multipath-tools
-version: 0.11.0+164+suse.24eeee7
-mtime: 1737727395
-commit: 24eeee77ef43bd4fee19f1eca07036874cda2859
+version: 0.11.0+183+suse.3973293
+mtime: 1741128802
+commit: 397329364d2e192b2538a9157cac3a77bd40fac0