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 2021-08-24 10:54:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/multipath-tools (Old)
 and      /work/SRC/openSUSE:Factory/.multipath-tools.new.1899 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "multipath-tools"

Tue Aug 24 10:54:17 2021 rev:133 rq:913320 version:0.8.6+32+suse.f11c192

Changes:
--------
--- /work/SRC/openSUSE:Factory/multipath-tools/multipath-tools.changes  
2021-06-13 23:05:49.755634519 +0200
+++ 
/work/SRC/openSUSE:Factory/.multipath-tools.new.1899/multipath-tools.changes    
    2021-08-24 10:55:06.376302398 +0200
@@ -1,0 +2,26 @@
+Fri Aug 13 11:03:13 UTC 2021 - Martin Wilck <[email protected]>
+
+- Spec file: remove compatibility code for SLE <= SLE15-SP2
+
+-------------------------------------------------------------------
+Thu Aug 12 20:08:23 UTC 2021 - [email protected]
+
+- Update to version 0.8.6+32+suse.f11c192:
+  * libmultipath:fix compilation with glibc 2.34 (bsc#1189099)
+  * libmultipath: avoid buffer size warning with systemd 240+ 
+    (bsc#1189176)
+  * libmultipath: use uint64_t for sg_id.lun (bsc#1187534)
+
+- Upstream bug fixes:
+  * multipath-tools: make HUAWEI/XSG1 config work with alua and multibus
+  * multipath-tools: add info about HPE Alletra 6000 and 9000
+  * multipathd: cli_getprkey(): fix return value and "aptpl" support
+  * multipathd: don't rescan_path on wwid change in uev_update_path
+  * kpartx: Don't leak memory when getblock returns NULL
+  * multipath: free vectors in configure
+  * multipathd: fix ev_remove_path return code handling
+  * multipathd: remove duplicate orphan_paths in flush_map
+  * multipathd: don't fail to remove path once the map is removed
+  * multipathd: fix compilation issue with liburcu < 0.8
+
+-------------------------------------------------------------------
@@ -4 +30 @@
-- install to /usr (boo#1029961)
+- install to /usr on Tumbleweed (boo#1029961)

Old:
----
  multipath-tools-0.8.6+10+suse.4771137.obscpio

New:
----
  multipath-tools-0.8.6+32+suse.f11c192.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ multipath-tools.spec ++++++
--- /var/tmp/diff_new_pack.jPQEJB/_old  2021-08-24 10:55:07.020301545 +0200
+++ /var/tmp/diff_new_pack.jPQEJB/_new  2021-08-24 10:55:07.020301545 +0200
@@ -18,27 +18,18 @@
 
 %global _lto_cflags %{nil}
 
-# Whether to build libdmmp
-# Default YES except for SLE12 / Leap 42
-%if 0%{?suse_version} >= 1500
+# Whether to build libdmmp - default YES
 %bcond_without libdmmp
-%else
-%bcond_with libdmmp
-%endif
 
-# "make test" disabled on SLE12 (cmocka not available)
-%if 0%{?suse_version} >= 1500
+# Whether to run tests - default YES
 %bcond_without check
-%else
-%bcond_with check
-%endif
 
 # This should match the version in libdmmp/Makefile
 %define _libdmmp_version 0.2.0
 %define libdmmp_version %(echo %{_libdmmp_version} | tr . _)
 
 Name:           multipath-tools
-Version:        0.8.6+10+suse.4771137
+Version:        0.8.6+32+suse.f11c192
 Release:        0
 Summary:        Tools to Manage Multipathed Devices with the device-mapper
 License:        GPL-2.0-only
@@ -89,6 +80,7 @@
 availability of the map devices.
 
 
+
 # Currently, it makes no sense to split out libmpathpersist and libmpathcmd
 # separately. libmultipath has no stable API at all, and it depends
 # on libmpathcmd (to be fixed). libmpathpersist depends on libmultipath
@@ -161,22 +153,17 @@
 
 %prep
 %setup -q -n multipath-tools-%{version}
-# This must be before autopatch for code 12, otherwise build error
 cp %{SOURCE4} .
 cp %{SOURCE5} .
 %autopatch -p1
 
 %build
 [ -n "$SOURCE_DATE_EPOCH" ] && export 
KBUILD_BUILD_TIMESTAMP=@$SOURCE_DATE_EPOCH
-# %%make_build is not supported in SLE12
-%{?make_build}%{!?make_build:make %{?_smp_mflags}} \
- CC="%__cc" OPTFLAGS="%{optflags}" %{dirflags} %{makeflags}
+%{make_build} OPTFLAGS="%{optflags}" %{dirflags} %{makeflags}
 
 %if 0%{?with_check} == 1
 %check
-# ld fails to resolve cmocka's __wrap symbols with -flto
-# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88643
-make OPTFLAGS="%{optflags}" %{_make_output_sync} %{?_smp_mflags} test
+%{make_build} OPTFLAGS="%{optflags}" test
 %endif
 
 %install
@@ -215,11 +202,7 @@
 %postun
 %{?regenerate_initrd_post}
 %service_del_postun multipathd.service
-%if 0%{?suse_version} >= 1550
 %service_del_postun_without_restart multipathd.socket
-%else
-%service_del_postun -n multipathd.socket
-%endif
 
 %posttrans
 %{?regenerate_initrd_posttrans}

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.jPQEJB/_old  2021-08-24 10:55:07.080301465 +0200
+++ /var/tmp/diff_new_pack.jPQEJB/_new  2021-08-24 10:55:07.084301460 +0200
@@ -1,4 +1,4 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/openSUSE/multipath-tools.git</param>
-              <param 
name="changesrevision">47711374a3d8582b68b3cd76d26ba6bb4d652e26</param></service></servicedata>
\ No newline at end of file
+              <param 
name="changesrevision">f11c1929ed6dc7bdcc5b699df1c397f298406eab</param></service></servicedata>
\ No newline at end of file

++++++ multipath-tools-0.8.6+10+suse.4771137.obscpio -> 
multipath-tools-0.8.6+32+suse.f11c192.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/.github/workflows/sles.yaml 
new/multipath-tools-0.8.6+32+suse.f11c192/.github/workflows/sles.yaml
--- old/multipath-tools-0.8.6+10+suse.4771137/.github/workflows/sles.yaml       
1970-01-01 01:00:00.000000000 +0100
+++ new/multipath-tools-0.8.6+32+suse.f11c192/.github/workflows/sles.yaml       
2021-08-12 18:02:05.000000000 +0200
@@ -0,0 +1,32 @@
+name: compile and unit test on Leap
+on:
+  push:
+    branches:
+      - sles*
+      - factory
+      - next
+
+jobs:
+  build-and-test:
+    runs-on: ubuntu-20.04
+    strategy:
+      matrix:
+        os: ['leap15.2']
+        arch: ['', '-ppc64le', '-arm64', '-arm']
+        include:
+          - os: 'leap15.3'
+            arch: '-s390x'
+    steps:
+      - name: checkout
+        uses: actions/checkout@v1
+      - name: enable foreign arch
+        run: sudo docker run --rm --privileged multiarch/qemu-user-static 
--reset -p yes
+      - name: build and run unit tests
+        # Github actions doesn't support referencing docker images with
+        # context variables. Workaround: use mosteo-actions/docker-run action
+        # See https://github.community/t/expressions-in-docker-uri/16271
+        uses: mosteo-actions/docker-run@v1
+        with:
+          image: mwilck/multipath-build-${{ matrix.os }}${{ matrix.arch }}
+          command: test
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/multipath-tools-0.8.6+10+suse.4771137/.gitignore 
new/multipath-tools-0.8.6+32+suse.f11c192/.gitignore
--- old/multipath-tools-0.8.6+10+suse.4771137/.gitignore        1970-01-01 
01:00:00.000000000 +0100
+++ new/multipath-tools-0.8.6+32+suse.f11c192/.gitignore        2021-08-12 
18:02:05.000000000 +0200
@@ -0,0 +1,25 @@
+*.o
+.dotest
+*~
+*.so
+*.so.0
+*.a
+*.gz
+*.d
+kpartx/kpartx
+multipath/multipath
+multipathd/multipathd
+mpathpersist/mpathpersist
+.nfs*
+*.swp
+*.patch
+*.rej
+*.orig
+libdmmp/docs/man/*.3.gz
+libdmmp/*.so.*
+libdmmp/test/libdmmp_test
+libdmmp/test/libdmmp_speed_test
+tests/*-test
+tests/*.out
+libmultipath/nvme-ioctl.c
+libmultipath/nvme-ioctl.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/multipath-tools-0.8.6+10+suse.4771137/Makefile.inc 
new/multipath-tools-0.8.6+32+suse.f11c192/Makefile.inc
--- old/multipath-tools-0.8.6+10+suse.4771137/Makefile.inc      2021-04-12 
18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/Makefile.inc      2021-08-12 
18:02:05.000000000 +0200
@@ -95,12 +95,13 @@
 STACKPROT := $(call TEST_CC_OPTION,-fstack-protector-strong,-fstack-protector)
 ERROR_DISCARDED_QUALIFIERS := $(call 
TEST_CC_OPTION,-Werror=discarded-qualifiers,)
 WNOCLOBBERED := $(call TEST_CC_OPTION,-Wno-clobbered -Wno-error=clobbered,)
+WFORMATOVERFLOW := $(call TEST_CC_OPTION,-Wformat-overflow=2,)
 
 OPTFLAGS       := -O2 -g $(STACKPROT) --param=ssp-buffer-size=4
-WARNFLAGS      := -Werror -Wall -Wextra -Wformat=2 -Werror=implicit-int \
+WARNFLAGS      := -Werror -Wall -Wextra -Wformat=2 $(WFORMATOVERFLOW) 
-Werror=implicit-int \
                  -Werror=implicit-function-declaration -Werror=format-security 
\
                  $(WNOCLOBBERED) -Werror=cast-qual 
$(ERROR_DISCARDED_QUALIFIERS)
-CPPFLAGS       := -Wp,-D_FORTIFY_SOURCE=2 
+CPPFLAGS       := -Wp,-D_FORTIFY_SOURCE=2
 CFLAGS         := --std=gnu99 $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \
                   -DBIN_DIR=\"$(bindir)\" -DLIB_STRING=\"${LIB}\" 
-DRUN_DIR=\"${RUN}\" \
                   -MMD -MP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/multipath-tools-0.8.6+10+suse.4771137/README.alua 
new/multipath-tools-0.8.6+32+suse.f11c192/README.alua
--- old/multipath-tools-0.8.6+10+suse.4771137/README.alua       2021-04-12 
18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/README.alua       2021-08-12 
18:02:05.000000000 +0200
@@ -6,7 +6,7 @@
 - EMC CLARiiON/VNX:
    "Failover Mode" should be changed to "4" or "Active-Active 
mode(ALUA)-failover mode 4"
 
-- HPE 3PAR:
+- HPE 3PAR, Primera, and Alletra 9000:
    "Host:" should be changed to "Generic-ALUA Persona 2 (UARepLun, SESLun, 
ALUA)".
 
 - Promise VTrak/Vess:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/kpartx/kpartx.c 
new/multipath-tools-0.8.6+32+suse.f11c192/kpartx/kpartx.c
--- old/multipath-tools-0.8.6+10+suse.4771137/kpartx/kpartx.c   2021-04-12 
18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/kpartx/kpartx.c   2021-08-12 
18:02:05.000000000 +0200
@@ -766,6 +766,8 @@
        if (read(fd, bp->block, secsz) != secsz) {
                fprintf(stderr, "read error, sector %d\n", secnr);
                blockhead = bp->next;
+               free(bp->block);
+               free(bp);
                return NULL;
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/Makefile 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/Makefile
--- old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/Makefile  2021-04-12 
18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/Makefile  2021-08-12 
18:02:05.000000000 +0200
@@ -76,6 +76,8 @@
 docs/man/dmmp_strerror.3:      $(HEADERS)
        TEMPFILE=$(shell mktemp); \
        cat $^ | perl docs/doc-preclean.pl >$$TEMPFILE; \
+       LC_ALL=C \
+       KBUILD_BUILD_TIMESTAMP=`git log -n1 --pretty=%cd --date=iso -- $^` \
        perl docs/kernel-doc -man $$TEMPFILE | \
            perl docs/split-man.pl docs/man; \
        rm -f $$TEMPFILE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_free.3 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_free.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_free.3  
    2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_free.3  
    2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_context_free" 3 "dmmp_context_free" "March 2021" "Device Mapper 
Multipath API - libdmmp Manual" 
+.TH "dmmp_context_free" 3 "dmmp_context_free" "March 2018" "Device Mapper 
Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_context_free \- Release the memory of struct dmmp_context.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_log_func_set.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_log_func_set.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_log_func_set.3
      2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_log_func_set.3
      2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_context_log_func_set" 3 "dmmp_context_log_func_set" "March 2021" 
"Device Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_context_log_func_set" 3 "dmmp_context_log_func_set" "March 2018" 
"Device Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_context_log_func_set \- Set log handler function.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_log_priority_get.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_log_priority_get.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_log_priority_get.3
  2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_log_priority_get.3
  2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_context_log_priority_get" 3 "dmmp_context_log_priority_get" "March 
2021" "Device Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_context_log_priority_get" 3 "dmmp_context_log_priority_get" "March 
2018" "Device Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_context_log_priority_get \- Get log priority.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_log_priority_set.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_log_priority_set.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_log_priority_set.3
  2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_log_priority_set.3
  2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_context_log_priority_set" 3 "dmmp_context_log_priority_set" "March 
2021" "Device Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_context_log_priority_set" 3 "dmmp_context_log_priority_set" "March 
2018" "Device Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_context_log_priority_set \- Set log priority.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_new.3 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_new.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_new.3   
    2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_new.3   
    2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_context_new" 3 "dmmp_context_new" "March 2021" "Device Mapper 
Multipath API - libdmmp Manual" 
+.TH "dmmp_context_new" 3 "dmmp_context_new" "March 2018" "Device Mapper 
Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_context_new \- Create struct dmmp_context.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_timeout_get.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_timeout_get.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_timeout_get.3
       2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_timeout_get.3
       2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_context_timeout_get" 3 "dmmp_context_timeout_get" "March 2021" 
"Device Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_context_timeout_get" 3 "dmmp_context_timeout_get" "March 2018" 
"Device Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_context_timeout_get \- Get IPC timeout.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_timeout_set.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_timeout_set.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_timeout_set.3
       2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_timeout_set.3
       2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_context_timeout_set" 3 "dmmp_context_timeout_set" "March 2021" 
"Device Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_context_timeout_set" 3 "dmmp_context_timeout_set" "March 2018" 
"Device Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_context_timeout_set \- Set IPC timeout.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_userdata_get.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_userdata_get.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_userdata_get.3
      2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_userdata_get.3
      2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_context_userdata_get" 3 "dmmp_context_userdata_get" "March 2021" 
"Device Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_context_userdata_get" 3 "dmmp_context_userdata_get" "March 2018" 
"Device Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_context_userdata_get \- Get user data pointer.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_userdata_set.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_userdata_set.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_context_userdata_set.3
      2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_context_userdata_set.3
      2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_context_userdata_set" 3 "dmmp_context_userdata_set" "March 2021" 
"Device Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_context_userdata_set" 3 "dmmp_context_userdata_set" "March 2018" 
"Device Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_context_userdata_set \- Set user data pointer.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_flush_mpath.3 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_flush_mpath.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_flush_mpath.3   
    2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_flush_mpath.3   
    2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_flush_mpath" 3 "dmmp_flush_mpath" "March 2021" "Device Mapper 
Multipath API - libdmmp Manual" 
+.TH "dmmp_flush_mpath" 3 "dmmp_flush_mpath" "March 2018" "Device Mapper 
Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_flush_mpath \- Flush specified multipath device map if unused.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_last_error_msg.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_last_error_msg.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_last_error_msg.3
    2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_last_error_msg.3
    2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_last_error_msg" 3 "dmmp_last_error_msg" "March 2021" "Device Mapper 
Multipath API - libdmmp Manual" 
+.TH "dmmp_last_error_msg" 3 "dmmp_last_error_msg" "March 2018" "Device Mapper 
Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_last_error_msg \- Retrieves the last error message.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_log_priority_str.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_log_priority_str.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_log_priority_str.3
  2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_log_priority_str.3
  2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_log_priority_str" 3 "dmmp_log_priority_str" "March 2021" "Device 
Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_log_priority_str" 3 "dmmp_log_priority_str" "March 2018" "Device 
Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_log_priority_str \- Convert log priority to string.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_mpath_array_free.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_mpath_array_free.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_mpath_array_free.3
  2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_mpath_array_free.3
  2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_mpath_array_free" 3 "dmmp_mpath_array_free" "March 2021" "Device 
Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_mpath_array_free" 3 "dmmp_mpath_array_free" "March 2018" "Device 
Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_mpath_array_free \- Free 'struct dmmp_mpath' pointer array.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_mpath_array_get.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_mpath_array_get.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_mpath_array_get.3
   2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_mpath_array_get.3
   2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_mpath_array_get" 3 "dmmp_mpath_array_get" "March 2021" "Device 
Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_mpath_array_get" 3 "dmmp_mpath_array_get" "March 2018" "Device 
Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_mpath_array_get \- Query all existing multipath devices.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_mpath_kdev_name_get.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_mpath_kdev_name_get.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_mpath_kdev_name_get.3
       2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_mpath_kdev_name_get.3
       2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_mpath_kdev_name_get" 3 "dmmp_mpath_kdev_name_get" "March 2021" 
"Device Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_mpath_kdev_name_get" 3 "dmmp_mpath_kdev_name_get" "March 2018" 
"Device Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_mpath_kdev_name_get \- Retrieve kernel DEVNAME of certain mpath.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_mpath_name_get.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_mpath_name_get.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_mpath_name_get.3
    2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_mpath_name_get.3
    2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_mpath_name_get" 3 "dmmp_mpath_name_get" "March 2021" "Device Mapper 
Multipath API - libdmmp Manual" 
+.TH "dmmp_mpath_name_get" 3 "dmmp_mpath_name_get" "March 2018" "Device Mapper 
Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_mpath_name_get \- Retrieve name(alias) of certain mpath.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_mpath_wwid_get.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_mpath_wwid_get.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_mpath_wwid_get.3
    2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_mpath_wwid_get.3
    2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_mpath_wwid_get" 3 "dmmp_mpath_wwid_get" "March 2021" "Device Mapper 
Multipath API - libdmmp Manual" 
+.TH "dmmp_mpath_wwid_get" 3 "dmmp_mpath_wwid_get" "March 2018" "Device Mapper 
Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_mpath_wwid_get \- Retrieve WWID of certain mpath.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_array_get.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_array_get.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_array_get.3
    2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_array_get.3
    2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_path_array_get" 3 "dmmp_path_array_get" "March 2021" "Device Mapper 
Multipath API - libdmmp Manual" 
+.TH "dmmp_path_array_get" 3 "dmmp_path_array_get" "March 2018" "Device Mapper 
Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_path_array_get \- Retrieve path pointer array.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_blk_name_get.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_blk_name_get.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_blk_name_get.3
 2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_blk_name_get.3
 2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_path_blk_name_get" 3 "dmmp_path_blk_name_get" "March 2021" "Device 
Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_path_blk_name_get" 3 "dmmp_path_blk_name_get" "March 2018" "Device 
Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_path_blk_name_get \- Retrieve block name.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_group_array_get.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_group_array_get.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_group_array_get.3
      2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_group_array_get.3
      2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_path_group_array_get" 3 "dmmp_path_group_array_get" "March 2021" 
"Device Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_path_group_array_get" 3 "dmmp_path_group_array_get" "March 2018" 
"Device Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_path_group_array_get \- Retrieve path groups pointer array.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_group_id_get.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_group_id_get.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_group_id_get.3
 2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_group_id_get.3
 2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_path_group_id_get" 3 "dmmp_path_group_id_get" "March 2021" "Device 
Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_path_group_id_get" 3 "dmmp_path_group_id_get" "March 2018" "Device 
Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_path_group_id_get \- Retrieve path group ID.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_group_priority_get.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_group_priority_get.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_group_priority_get.3
   2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_group_priority_get.3
   2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_path_group_priority_get" 3 "dmmp_path_group_priority_get" "March 
2021" "Device Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_path_group_priority_get" 3 "dmmp_path_group_priority_get" "March 
2018" "Device Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_path_group_priority_get \- Retrieve path group priority.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_group_selector_get.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_group_selector_get.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_group_selector_get.3
   2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_group_selector_get.3
   2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_path_group_selector_get" 3 "dmmp_path_group_selector_get" "March 
2021" "Device Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_path_group_selector_get" 3 "dmmp_path_group_selector_get" "March 
2018" "Device Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_path_group_selector_get \- Retrieve path group selector.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_group_status_get.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_group_status_get.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_group_status_get.3
     2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_group_status_get.3
     2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_path_group_status_get" 3 "dmmp_path_group_status_get" "March 2021" 
"Device Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_path_group_status_get" 3 "dmmp_path_group_status_get" "March 2018" 
"Device Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_path_group_status_get \- Retrieve path group status.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_group_status_str.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_group_status_str.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_group_status_str.3
     2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_group_status_str.3
     2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_path_group_status_str" 3 "dmmp_path_group_status_str" "March 2021" 
"Device Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_path_group_status_str" 3 "dmmp_path_group_status_str" "March 2018" 
"Device Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_path_group_status_str \- Convert path group status to string.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_status_get.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_status_get.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_status_get.3
   2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_status_get.3
   2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_path_status_get" 3 "dmmp_path_status_get" "March 2021" "Device 
Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_path_status_get" 3 "dmmp_path_status_get" "March 2018" "Device 
Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_path_status_get \- Retrieve the path status.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_status_str.3
 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_status_str.3
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_path_status_str.3
   2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_path_status_str.3
   2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_path_status_str" 3 "dmmp_path_status_str" "March 2021" "Device 
Mapper Multipath API - libdmmp Manual" 
+.TH "dmmp_path_status_str" 3 "dmmp_path_status_str" "March 2018" "Device 
Mapper Multipath API - libdmmp Manual" 
 .SH NAME
 dmmp_path_status_str \- Convert path status to string.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_reconfig.3 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_reconfig.3
--- old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_reconfig.3  
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_reconfig.3  
2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_reconfig" 3 "dmmp_reconfig" "March 2021" "Device Mapper Multipath 
API - libdmmp Manual" 
+.TH "dmmp_reconfig" 3 "dmmp_reconfig" "March 2018" "Device Mapper Multipath 
API - libdmmp Manual" 
 .SH NAME
 dmmp_reconfig \- Instruct multipathd daemon to do reconfiguration.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_strerror.3 
new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_strerror.3
--- old/multipath-tools-0.8.6+10+suse.4771137/libdmmp/docs/man/dmmp_strerror.3  
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/libdmmp/docs/man/dmmp_strerror.3  
2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "dmmp_strerror" 3 "dmmp_strerror" "March 2021" "Device Mapper Multipath 
API - libdmmp Manual" 
+.TH "dmmp_strerror" 3 "dmmp_strerror" "March 2018" "Device Mapper Multipath 
API - libdmmp Manual" 
 .SH NAME
 dmmp_strerror \- Convert error code to string.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/configure.c 
new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/configure.c
--- old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/configure.c  
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/configure.c  
2021-08-12 18:02:05.000000000 +0200
@@ -398,7 +398,7 @@
                start_io_err_stat_thread(vecs);
 
        n_paths = VECTOR_SIZE(mpp->paths);
-        /*
+       /*
         * assign paths to path groups -- start with no groups and all paths
         * in mpp->paths
         */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/devmapper.c 
new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/devmapper.c
--- old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/devmapper.c  
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/devmapper.c  
2021-08-12 18:02:05.000000000 +0200
@@ -49,6 +49,9 @@
 
 #ifdef LIBDM_API_DEFERRED
 static int dm_cancel_remove_partmaps(const char * mapname);
+#define __DR_UNUSED__ /* empty */
+#else
+#define __DR_UNUSED__ __attribute__((unused))
 #endif
 
 static int do_foreach_partmaps(const char * mapname,
@@ -384,7 +387,8 @@
 #define do_deferred(x) ((x) == DEFERRED_REMOVE_ON || (x) == 
DEFERRED_REMOVE_IN_PROGRESS)
 
 static int
-dm_simplecmd (int task, const char *name, int no_flush, int need_sync, 
uint16_t udev_flags, int deferred_remove) {
+dm_simplecmd (int task, const char *name, int no_flush, int need_sync,
+             uint16_t udev_flags, int deferred_remove __DR_UNUSED__) {
        int r = 0;
        int udev_wait_flag = ((need_sync || udev_flags) &&
                              (task == DM_DEVICE_RESUME ||
@@ -598,8 +602,8 @@
                return r;
 
        /* If the resume failed, dm will leave the device suspended, and
-        * drop the new table, so doing a second resume will try using
-        * the original table */
+        * drop the new table, so doing a second resume will try using
+        * the original table */
        if (dm_is_suspended(mpp->alias))
                dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, !flush, 1,
                             udev_flags, 0);
@@ -1122,7 +1126,8 @@
 #else
 
 int
-dm_flush_map_nopaths(const char * mapname, int deferred_remove)
+dm_flush_map_nopaths(const char * mapname,
+                    int deferred_remove __attribute__((unused)))
 {
        return _dm_flush_map(mapname, 1, 0, 0, 0);
 }
@@ -1573,7 +1578,7 @@
 #else
 
 int
-dm_cancel_deferred_remove (struct multipath *mpp)
+dm_cancel_deferred_remove (struct multipath *mpp __attribute__((unused)))
 {
        return 0;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/discovery.c 
new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/discovery.c
--- old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/discovery.c  
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/discovery.c  
2021-08-12 18:02:05.000000000 +0200
@@ -635,7 +635,7 @@
 {
        struct udev_device *rport_dev = NULL;
        char value[16], *eptr;
-       char rport_id[32];
+       char rport_id[42];
        unsigned int tmo;
        int ret;
 
@@ -1427,7 +1427,7 @@
                        attr_path = udev_device_get_sysname(parent);
                        if (!attr_path)
                                break;
-                       if (sscanf(attr_path, "%i:%i:%i:%i",
+                       if (sscanf(attr_path, "%i:%i:%i:%" SCNu64,
                                   &pp->sg_id.host_no,
                                   &pp->sg_id.channel,
                                   &pp->sg_id.scsi_id,
@@ -1462,7 +1462,7 @@
        /*
         * host / bus / target / lun
         */
-       condlog(3, "%s: h:b:t:l = %i:%i:%i:%i",
+       condlog(3, "%s: h:b:t:l = %i:%i:%i:%" PRIu64,
                        pp->dev,
                        pp->sg_id.host_no,
                        pp->sg_id.channel,
@@ -1577,7 +1577,7 @@
                   &pp->sg_id.host_no,
                   &pp->sg_id.channel,
                   &pp->sg_id.scsi_id) == 3) {
-               condlog(3, "%s: h:b:t:l = %i:%i:%i:%i",
+               condlog(3, "%s: h:b:t:l = %i:%i:%i:%" PRIu64,
                        pp->dev,
                        pp->sg_id.host_no,
                        pp->sg_id.channel,
@@ -1636,7 +1636,7 @@
         */
        pp->sg_id.lun = 0;
        pp->sg_id.channel = 0;
-       condlog(3, "%s: h:b:t:l = %i:%i:%i:%i",
+       condlog(3, "%s: h:b:t:l = %i:%i:%i:%" PRIu64,
                pp->dev,
                pp->sg_id.host_no,
                pp->sg_id.channel,
@@ -1815,7 +1815,7 @@
                        attr_path = udev_device_get_sysname(parent);
                        if (!attr_path)
                                break;
-                       if (sscanf(attr_path, "%i:%i:%i:%i",
+                       if (sscanf(attr_path, "%i:%i:%i:%" SCNu64,
                                   &pp->sg_id.host_no,
                                   &pp->sg_id.channel,
                                   &pp->sg_id.scsi_id,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/hwtable.c 
new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/hwtable.c
--- old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/hwtable.c    
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/hwtable.c    
2021-08-12 18:02:05.000000000 +0200
@@ -107,7 +107,7 @@
         * HPE
         */
        {
-               /* 3PAR / Primera */
+               /* 3PAR / Primera / Alletra 9000 */
                .vendor        = "3PARdata",
                .product       = "VV",
                .pgpolicy      = GROUP_BY_PRIO,
@@ -225,7 +225,7 @@
                .prio_name     = PRIO_ALUA,
        },
        {
-               /* Nimble Storage */
+               /* Nimble Storage / HPE Alletra 6000 */
                .vendor        = "Nimble",
                .product       = "Server",
                .hwhandler     = "1 alua",
@@ -1078,11 +1078,14 @@
         * Huawei
         */
        {
-               /* OceanStor V3 */
+               /* OceanStor V3-V6 */
+               // This config works with multibus and ALUA
+               // ALUA is required by HyperMetro
                .vendor        = "HUAWEI",
                .product       = "XSG1",
                .pgpolicy      = GROUP_BY_PRIO,
-               .prio_name     = PRIO_ALUA,
+               .pgfailback    = -FAILBACK_IMMEDIATE,
+               .no_path_retry = 15,
        },
        /*
         * Kove
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/print.c 
new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/print.c
--- old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/print.c      
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/print.c      
2021-08-12 18:02:05.000000000 +0200
@@ -1,4 +1,4 @@
-/*
+ /*
  * Copyright (c) 2005 Christophe Varoqui
  */
 #include <stdio.h>
@@ -392,7 +392,7 @@
        if (!pp || pp->sg_id.host_no < 0)
                return snprintf(buff, len, "#:#:#:#");
 
-       return snprintf(buff, len, "%i:%i:%i:%i",
+       return snprintf(buff, len, "%i:%i:%i:%" PRIu64,
                        pp->sg_id.host_no,
                        pp->sg_id.channel,
                        pp->sg_id.scsi_id,
@@ -594,7 +594,7 @@
 snprint_tgt_wwpn (char * buff, size_t len, const struct path * pp)
 {
        struct udev_device *rport_dev = NULL;
-       char rport_id[32];
+       char rport_id[42];
        const char *value = NULL;
        int ret;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/prioritizers/weightedpath.c
 
new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/prioritizers/weightedpath.c
--- 
old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/prioritizers/weightedpath.c
  2021-04-12 18:35:42.000000000 +0200
+++ 
new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/prioritizers/weightedpath.c
  2021-08-12 18:02:05.000000000 +0200
@@ -101,7 +101,7 @@
        }
 
        if (!strcmp(regex, HBTL)) {
-               sprintf(path, "%d:%d:%d:%d", pp->sg_id.host_no,
+               sprintf(path, "%d:%d:%d:%" PRIu64, pp->sg_id.host_no,
                        pp->sg_id.channel, pp->sg_id.scsi_id, pp->sg_id.lun);
        } else if (!strcmp(regex, DEV_NAME)) {
                strcpy(path, pp->dev);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/structs.c 
new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/structs.c
--- old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/structs.c    
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/structs.c    
2021-08-12 18:02:05.000000000 +0200
@@ -96,7 +96,7 @@
                pp->sg_id.host_no = -1;
                pp->sg_id.channel = -1;
                pp->sg_id.scsi_id = -1;
-               pp->sg_id.lun = -1;
+               pp->sg_id.lun = SCSI_INVALID_LUN;
                pp->sg_id.proto_id = SCSI_PROTOCOL_UNSPEC;
                pp->fd = -1;
                pp->tpgs = TPGS_UNDEF;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/structs.h 
new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/structs.h
--- old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/structs.h    
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/structs.h    
2021-08-12 18:02:05.000000000 +0200
@@ -178,6 +178,8 @@
        SCSI_PROTOCOL_UNSPEC = 0xf, /* No specific protocol */
 };
 
+#define SCSI_INVALID_LUN ~0ULL
+
 enum no_undef_states {
        NU_NO = -1,
        NU_UNDEF = 0,
@@ -258,7 +260,7 @@
        int host_no;
        int channel;
        int scsi_id;
-       int lun;
+       uint64_t lun;
        short h_cmd_per_lun;
        short d_queue_depth;
        enum scsi_protocol proto_id;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/structs_vec.c 
new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/structs_vec.c
--- old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/structs_vec.c        
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/structs_vec.c        
2021-08-12 18:02:05.000000000 +0200
@@ -45,8 +45,8 @@
 
                                /*
                                 * Avoid adding removed paths to the map again
-                                * when we reload it. Such paths may exist if
-                                * domap fails in ev_remove_path().
+                                * when we reload it. Such paths may exist in
+                                * ev_remove_paths() or if it returns failure.
                                 */
                                pp1 = find_path_by_devt(pathvec, pp->dev_t);
                                if (pp1 && pp->initialized != INIT_REMOVED &&
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/sysfs.c 
new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/sysfs.c
--- old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/sysfs.c      
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/sysfs.c      
2021-08-12 18:02:05.000000000 +0200
@@ -358,7 +358,7 @@
                                        strchop(pp->wwid);
                                }
                        }
-                } else if (nr < 0)
+               } else if (nr < 0)
                        condlog(1, "%s: error reading from %s: %m",
                                __func__, pathbuf);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/uevent.c 
new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/uevent.c
--- old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/uevent.c     
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/uevent.c     
2021-08-12 18:02:05.000000000 +0200
@@ -569,7 +569,7 @@
        }
        pthread_cleanup_push(monitor_cleanup, monitor);
 #ifdef LIBUDEV_API_RECVBUF
-       if (udev_monitor_set_receive_buffer_size(monitor, 128 * 1024 * 1024))
+       if (udev_monitor_set_receive_buffer_size(monitor, 128 * 1024 * 1024) < 
0)
                condlog(2, "failed to increase buffer size");
 #endif
        fd = udev_monitor_get_fd(monitor);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/util.c 
new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/util.c
--- old/multipath-tools-0.8.6+10+suse.4771137/libmultipath/util.c       
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/libmultipath/util.c       
2021-08-12 18:02:05.000000000 +0200
@@ -223,8 +223,8 @@
 
        ret = pthread_attr_init(attr);
        assert(ret == 0);
-       if (stacksize < PTHREAD_STACK_MIN)
-               stacksize = PTHREAD_STACK_MIN;
+       if (PTHREAD_STACK_MIN > 0 && stacksize < (size_t)PTHREAD_STACK_MIN)
+               stacksize = (size_t)PTHREAD_STACK_MIN;
        ret = pthread_attr_setstacksize(attr, stacksize);
        assert(ret == 0);
        if (detached) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/multipath/main.c 
new/multipath-tools-0.8.6+32+suse.f11c192/multipath/main.c
--- old/multipath-tools-0.8.6+10+suse.4771137/multipath/main.c  2021-04-12 
18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/multipath/main.c  2021-08-12 
18:02:05.000000000 +0200
@@ -466,7 +466,6 @@
         */
        curmp = vector_alloc();
        pathvec = vector_alloc();
-       atexit(cleanup_vecs);
 
        if (!curmp || !pathvec) {
                condlog(0, "can not allocate memory");
@@ -578,6 +577,11 @@
        if (refwwid)
                FREE(refwwid);
 
+       free_multipathvec(curmp, KEEP_PATHS);
+       vecs.mpvec = NULL;
+       free_pathvec(pathvec, FREE_PATHS);
+       vecs.pathvec = NULL;
+
        return r;
 }
 
@@ -823,6 +827,7 @@
        conf = get_multipath_config();
        conf->retrigger_tries = 0;
        conf->force_sync = 1;
+       atexit(cleanup_vecs);
        while ((arg = getopt(argc, argv, ":adDcChl::eFfM:v:p:b:BrR:itTquUwW")) 
!= EOF ) {
                switch(arg) {
                case 1: printf("optarg : %s\n",optarg);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/multipath/multipath.8 
new/multipath-tools-0.8.6+32+suse.f11c192/multipath/multipath.8
--- old/multipath-tools-0.8.6+10+suse.4771137/multipath/multipath.8     
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/multipath/multipath.8     
2021-08-12 18:02:05.000000000 +0200
@@ -225,7 +225,7 @@
 .TP
 .B \-e
 Enable all foreign libraries. This overrides the
-.I enable_foreign 
+.I enable_foreign
 option from \fBmultipath.conf(5)\fR.
 .
 .TP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/multipathd/Makefile 
new/multipath-tools-0.8.6+32+suse.f11c192/multipathd/Makefile
--- old/multipath-tools-0.8.6+10+suse.4771137/multipathd/Makefile       
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/multipathd/Makefile       
2021-08-12 18:02:05.000000000 +0200
@@ -16,6 +16,8 @@
 LIBDEPS += -L$(multipathdir) -lmultipath -L$(mpathpersistdir) -lmpathpersist \
           -L$(mpathcmddir) -lmpathcmd -ludev -ldl -lurcu -lpthread \
           -ldevmapper -lreadline
+CFLAGS += $(shell $(PKGCONFIG) --modversion liburcu 2>/dev/null | \
+       awk -F. '{ printf("-DURCU_VERSION=0x%06x", 256 * ( 256 * $$1 + $$2) + 
$$3); }')
 
 ifdef SYSTEMD
        CFLAGS += -DUSE_SYSTEMD=$(SYSTEMD)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/multipathd/cli_handlers.c 
new/multipath-tools-0.8.6+32+suse.f11c192/multipathd/cli_handlers.c
--- old/multipath-tools-0.8.6+10+suse.4771137/multipathd/cli_handlers.c 
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/multipathd/cli_handlers.c 
2021-08-12 18:02:05.000000000 +0200
@@ -32,6 +32,12 @@
 #include "foreign.h"
 #include "cli_handlers.h"
 
+#define SET_REPLY_AND_LEN(__rep, __len, string_literal)                        
\
+       do {                                                            \
+               *(__rep) = strdup(string_literal);                      \
+               *(__len) = *(__rep) ? sizeof(string_literal) : 0;       \
+       } while (0)
+
 int
 show_paths (char ** r, int * len, struct vectors * vecs, char * style,
            int pretty)
@@ -752,7 +758,8 @@
                                /* Have the checker reinstate this path asap */
                                pp->tick = 1;
                                return 0;
-                       } else if (!ev_remove_path(pp, vecs, true))
+                       } else if (ev_remove_path(pp, vecs, true) &
+                                  REMOVE_PATH_SUCCESS)
                                /* Path removed in ev_remove_path() */
                                pp = NULL;
                        else {
@@ -801,8 +808,7 @@
        }
        return ev_add_path(pp, vecs, 1);
 blacklisted:
-       *reply = strdup("blacklisted\n");
-       *len = strlen(*reply) + 1;
+       SET_REPLY_AND_LEN(reply, len, "blacklisted\n");
        condlog(2, "%s: path blacklisted", param);
        return 0;
 }
@@ -813,6 +819,7 @@
        struct vectors * vecs = (struct vectors *)data;
        char * param = get_keyparam(v, PATH);
        struct path *pp;
+       int ret;
 
        param = convert_dev(param, 1);
        condlog(2, "%s: remove path (operator)", param);
@@ -821,7 +828,12 @@
                condlog(0, "%s: path already removed", param);
                return 1;
        }
-       return ev_remove_path(pp, vecs, 1);
+       ret = ev_remove_path(pp, vecs, 1);
+       if (ret == REMOVE_PATH_DELAY)
+               SET_REPLY_AND_LEN(reply, len, "delayed\n");
+       else if (ret == REMOVE_PATH_MAP_ERROR)
+               SET_REPLY_AND_LEN(reply, len, "map reload error. removed\n");
+       return (ret == REMOVE_PATH_FAILURE);
 }
 
 int
@@ -845,8 +857,7 @@
                invalid = 1;
        pthread_cleanup_pop(1);
        if (invalid) {
-               *reply = strdup("blacklisted\n");
-               *len = strlen(*reply) + 1;
+               SET_REPLY_AND_LEN(reply, len, "blacklisted\n");
                condlog(2, "%s: map blacklisted", param);
                return 1;
        }
@@ -1204,7 +1215,7 @@
 
        condlog(2, "reconfigure (operator)");
 
-       rc = set_config_state(DAEMON_CONFIGURE); 
+       rc = set_config_state(DAEMON_CONFIGURE);
        if (rc == ETIMEDOUT) {
                condlog(2, "timeout starting reconfiguration");
                return 1;
@@ -1529,7 +1540,7 @@
        struct multipath * mpp;
        struct vectors * vecs = (struct vectors *)data;
        char *mapname = get_keyparam(v, MAP);
-       char *flagstr = "";
+       uint64_t key;
 
        mapname = convert_dev(mapname, 0);
        condlog(3, "%s: get persistent reservation key (operator)", mapname);
@@ -1542,17 +1553,16 @@
        if (!*reply)
                return 1;
 
-       if (!get_be64(mpp->reservation_key)) {
+       key = get_be64(mpp->reservation_key);
+       if (!key) {
                sprintf(*reply, "none\n");
-               *len = strlen(*reply) + 1;
+               *len = sizeof("none\n");
                return 0;
        }
-       if (mpp->sa_flags & MPATH_F_APTPL_MASK)
-               flagstr = ":aptpl";
-       snprintf(*reply, 26, "0x%" PRIx64 "%s\n",
-                get_be64(mpp->reservation_key), flagstr);
-       (*reply)[19] = '\0';
-       *len = strlen(*reply) + 1;
+
+       /* This snprintf() can't overflow - PRIx64 needs max 16 chars */
+       *len = snprintf(*reply, 26, "0x%" PRIx64 "%s\n", key,
+                       mpp->sa_flags & MPATH_F_APTPL_MASK ? ":aptpl" : "") + 1;
        return 0;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/multipathd/main.c 
new/multipath-tools-0.8.6+32+suse.f11c192/multipathd/main.c
--- old/multipath-tools-0.8.6+10+suse.4771137/multipathd/main.c 2021-04-12 
18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/multipathd/main.c 2021-08-12 
18:02:05.000000000 +0200
@@ -660,7 +660,6 @@
        else
                condlog(2, "%s: map flushed", mpp->alias);
 
-       orphan_paths(vecs->pathvec, mpp, "map flushed");
        remove_map_and_stop_waiter(mpp, vecs);
 
        return 0;
@@ -839,7 +838,7 @@
                return;
 
        udd = udev_device_ref(pp->udev);
-       if (ev_remove_path(pp, vecs, 1) != 0 && pp->mpp) {
+       if (!(ev_remove_path(pp, vecs, 1) & REMOVE_PATH_SUCCESS) && pp->mpp) {
                pp->dmstate = PSTATE_FAILED;
                dm_fail_path(pp->mpp->alias, pp->dev_t);
        }
@@ -949,8 +948,8 @@
                                 * Make another attempt to remove the path
                                 */
                                pp->mpp = prev_mpp;
-                               ret = ev_remove_path(pp, vecs, true);
-                               if (ret != 0) {
+                               if (!(ev_remove_path(pp, vecs, true) &
+                                     REMOVE_PATH_SUCCESS)) {
                                        /*
                                         * Failure in ev_remove_path will keep
                                         * path in pathvec in INIT_REMOVED state
@@ -961,6 +960,7 @@
                                        dm_fail_path(pp->mpp->alias, pp->dev_t);
                                        condlog(1, "%s: failed to re-add path 
still mapped in %s",
                                                pp->dev, pp->mpp->alias);
+                                       ret = 1;
                                } else if (r == PATHINFO_OK)
                                        /*
                                         * Path successfully freed, move on to
@@ -1168,7 +1168,6 @@
 uev_remove_path (struct uevent *uev, struct vectors * vecs, int need_do_map)
 {
        struct path *pp;
-       int ret;
 
        condlog(3, "%s: remove path (uevent)", uev->kernel);
        delete_foreign(uev->udev);
@@ -1178,21 +1177,18 @@
        pthread_testcancel();
        pp = find_path_by_dev(vecs->pathvec, uev->kernel);
        if (pp)
-               ret = ev_remove_path(pp, vecs, need_do_map);
+               ev_remove_path(pp, vecs, need_do_map);
        lock_cleanup_pop(vecs->lock);
-       if (!pp) {
-               /* Not an error; path might have been purged earlier */
+       if (!pp) /* Not an error; path might have been purged earlier */
                condlog(0, "%s: path already removed", uev->kernel);
-               return 0;
-       }
-       return ret;
+       return 0;
 }
 
 int
 ev_remove_path (struct path *pp, struct vectors * vecs, int need_do_map)
 {
        struct multipath * mpp;
-       int i, retval = 0;
+       int i, retval = REMOVE_PATH_SUCCESS;
        char params[PARAMS_SIZE] = {0};
 
        /*
@@ -1200,6 +1196,13 @@
         */
        if ((mpp = pp->mpp)) {
                /*
+                * Mark the path as removed. In case of success, we
+                * will delete it for good. Otherwise, it will be deleted
+                * later, unless all attempts to reload this map fail.
+                */
+               set_path_removed(pp);
+
+               /*
                 * transform the mp->pg vector of vectors of paths
                 * into a mp->params string to feed the device-mapper
                 */
@@ -1210,13 +1213,9 @@
                }
 
                /*
-                * Mark the path as removed. In case of success, we
-                * will delete it for good. Otherwise, it will be deleted
-                * later, unless all attempts to reload this map fail.
-                * Note: we have to explicitly remove pp from mpp->paths,
+                * we have to explicitly remove pp from mpp->paths,
                 * update_mpp_paths() doesn't do that.
                 */
-               set_path_removed(pp);
                i = find_slot(mpp->paths, pp);
                if (i != -1)
                        vector_del_slot(mpp->paths, i);
@@ -1243,7 +1242,6 @@
                                condlog(2, "%s: removed map after"
                                        " removing all paths",
                                        alias);
-                               retval = 0;
                                /* flush_map() has freed the path */
                                goto out;
                        }
@@ -1260,11 +1258,14 @@
 
                if (mpp->wait_for_udev) {
                        mpp->wait_for_udev = 2;
+                       retval = REMOVE_PATH_DELAY;
                        goto out;
                }
 
-               if (!need_do_map)
+               if (!need_do_map) {
+                       retval = REMOVE_PATH_DELAY;
                        goto out;
+               }
                /*
                 * reload the map
                 */
@@ -1273,7 +1274,7 @@
                        condlog(0, "%s: failed in domap for "
                                "removal of path %s",
                                mpp->alias, pp->dev);
-                       retval = 1;
+                       retval = REMOVE_PATH_FAILURE;
                } else {
                        /*
                         * update our state from kernel
@@ -1281,12 +1282,12 @@
                        char devt[BLK_DEV_SIZE];
 
                        strlcpy(devt, pp->dev_t, sizeof(devt));
+
+                       /* setup_multipath will free the path
+                        * regardless of whether it succeeds or
+                        * fails */
                        if (setup_multipath(vecs, mpp))
-                               return 1;
-                       /*
-                        * Successful map reload without this path:
-                        * sync_map_state() will free it.
-                        */
+                               return REMOVE_PATH_MAP_ERROR;
                        sync_map_state(mpp);
 
                        condlog(2, "%s: path removed from map %s",
@@ -1302,8 +1303,10 @@
        return retval;
 
 fail:
+       condlog(0, "%s: error removing path. removing map %s", pp->dev,
+               mpp->alias);
        remove_map_and_stop_waiter(mpp, vecs);
-       return 1;
+       return REMOVE_PATH_MAP_ERROR;
 }
 
 static int
@@ -1356,7 +1359,6 @@
                        condlog(0, "%s: path wwid changed from '%s' to '%s'",
                                uev->kernel, wwid, pp->wwid);
                        ev_remove_path(pp, vecs, 1);
-                       rescan_path(uev->udev);
                        needs_reinit = 1;
                        goto out;
                } else {
@@ -2012,7 +2014,7 @@
 
                /* If path became failed again or continue failed, should reset
                 * path san_path_err_forget_rate and path dis_reinstate_time to
-                * start a new stable check. 
+                * start a new stable check.
                 */
                if ((pp->state != PATH_UP) && (pp->state != PATH_GHOST) &&
                        (pp->state != PATH_DELAYED)) {
@@ -3031,6 +3033,10 @@
        pthread_attr_destroy(&waiter_attr);
 }
 
+#ifndef URCU_VERSION
+#  define URCU_VERSION 0
+#endif
+#if (URCU_VERSION >= 0x000800)
 /*
  * Use a non-default call_rcu_data for child().
  *
@@ -3040,6 +3046,9 @@
  * can't be joined with pthread_join(), leaving a memory leak.
  *
  * Therefore we create our own, which can be destroyed and joined.
+ * The cleanup handler needs to call rcu_barrier(), which is only
+ * available in user-space RCU v0.8 and newer. See
+ * https://lists.lttng.org/pipermail/lttng-dev/2021-May/029958.html
  */
 static struct call_rcu_data *setup_rcu(void)
 {
@@ -3072,6 +3081,7 @@
        }
        rcu_unregister_thread();
 }
+#endif /* URCU_VERSION */
 
 static void cleanup_child(void)
 {
@@ -3116,9 +3126,14 @@
        init_unwinder();
        mlockall(MCL_CURRENT | MCL_FUTURE);
        signal_init();
+#if (URCU_VERSION >= 0x000800)
        mp_rcu_data = setup_rcu();
-
-       if (atexit(cleanup_rcu) || atexit(cleanup_child))
+       if (atexit(cleanup_rcu))
+               fprintf(stderr, "failed to register RCU cleanup handler\n");
+#else
+       rcu_init();
+#endif
+       if (atexit(cleanup_child))
                fprintf(stderr, "failed to register cleanup handlers\n");
 
        setup_thread_attr(&misc_attr, 64 * 1024, 0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/multipathd/main.h 
new/multipath-tools-0.8.6+32+suse.f11c192/multipathd/main.h
--- old/multipath-tools-0.8.6+10+suse.4771137/multipathd/main.h 2021-04-12 
18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/multipathd/main.h 2021-08-12 
18:02:05.000000000 +0200
@@ -13,6 +13,20 @@
        DAEMON_STATUS_SIZE,
 };
 
+enum remove_path_result {
+       REMOVE_PATH_FAILURE = 0x0, /* path could not be removed. It is still
+                                   * part of the kernel map, but its state
+                                   * is set to INIT_REMOVED, and it will be
+                                   * removed at the next possible occassion */
+       REMOVE_PATH_SUCCESS = 0x1, /* path was removed */
+       REMOVE_PATH_DELAY = 0x2, /* path is set to be removed later. it
+                                 * currently still exists and is part of the
+                                 * kernel map */
+       REMOVE_PATH_MAP_ERROR = 0x5, /* map was removed because of error. value
+                                     * includes REMOVE_PATH_SUCCESS bit
+                                     * because the path was also removed */
+};
+
 struct prout_param_descriptor;
 struct prin_resp;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/multipath-tools-0.8.6+10+suse.4771137/multipathd/multipathd.service 
new/multipath-tools-0.8.6+32+suse.f11c192/multipathd/multipathd.service
--- old/multipath-tools-0.8.6+10+suse.4771137/multipathd/multipathd.service     
2021-04-12 18:35:42.000000000 +0200
+++ new/multipath-tools-0.8.6+32+suse.f11c192/multipathd/multipathd.service     
2021-08-12 18:02:05.000000000 +0200
@@ -8,6 +8,7 @@
 Conflicts=shutdown.target
 ConditionKernelCommandLine=!nompath
 ConditionKernelCommandLine=!multipath=off
+ConditionVirtualization=!container
 
 [Service]
 Type=notify

++++++ multipath-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.jPQEJB/_old  2021-08-24 10:55:07.396301046 +0200
+++ /var/tmp/diff_new_pack.jPQEJB/_new  2021-08-24 10:55:07.396301046 +0200
@@ -1,5 +1,5 @@
 name: multipath-tools
-version: 0.8.6+10+suse.4771137
-mtime: 1618245342
-commit: 47711374a3d8582b68b3cd76d26ba6bb4d652e26
+version: 0.8.6+32+suse.f11c192
+mtime: 1628784125
+commit: f11c1929ed6dc7bdcc5b699df1c397f298406eab
 

Reply via email to