device-mapper-multipath-0.7.1-4.git847cc43

Update Source to the latest upstream commit
  * Previous patches 0001 and 0010-0013 are included in this commit.
Add 0001-libmultipath-update-3PARdata-builtin-config.patch
  * Change for building configuration. Posted upstream
Modify 0006-RH-use-rpm-optflags-if-present.patch
  * Add missing lines to actually use RPM_OPT_FLAGS.
This commit is contained in:
Benjamin Marzinski 2017-07-21 16:47:42 -05:00
parent 09b9b17566
commit df3507c52f
16 changed files with 63 additions and 233 deletions

1
.gitignore vendored
View File

@ -5,3 +5,4 @@ multipath-tools-091027.tar.gz
/multipath-tools-130222.tgz
/multipath-tools-f21166a.tgz
/multipath.conf
/multipath-tools-git847cc43.tgz

View File

@ -1,31 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Thu, 18 May 2017 10:11:07 -0500
Subject: [PATCH] libmultipath: add comment about resuming
The reason for the second resume in my commit "libmultipath: fix
suspended devs from failed reloads" is not obvious from the multipath
code, so add a comment.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmultipath/devmapper.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
index 69b634b..ee83e0f 100644
--- a/libmultipath/devmapper.c
+++ b/libmultipath/devmapper.c
@@ -399,6 +399,9 @@ int dm_addmap_reload(struct multipath *mpp, char *params, int flush)
if (r)
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 */
if (dm_is_suspended(mpp->alias))
dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, !flush, 1,
udev_flags, 0);
--
2.7.4

View File

@ -0,0 +1,28 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Thu, 22 Jun 2017 15:49:06 -0500
Subject: [PATCH] libmultipath: update 3PARdata builtin config
This updated config comes from hp.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmultipath/hwtable.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
index 390d143..54bdcfc 100644
--- a/libmultipath/hwtable.c
+++ b/libmultipath/hwtable.c
@@ -49,6 +49,8 @@ static struct hwentry default_hw[] = {
.hwhandler = "1 alua",
.prio_name = PRIO_ALUA,
.no_path_retry = 18,
+ .fast_io_fail = 10,
+ .dev_loss = MAX_DEV_LOSS_TMO,
},
{
/* RA8000 / ESA12000 */
--
2.7.4

View File

@ -19,13 +19,13 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
4 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/Makefile.inc b/Makefile.inc
index 1815f9a..2591fa9 100644
index 29c290a..cea015b 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -47,7 +47,7 @@ endif
@@ -48,7 +48,7 @@ endif
prefix =
exec_prefix = $(prefix)
usr_prefix = $(prefix)
-bindir = $(exec_prefix)/sbin
+bindir = $(exec_prefix)/usr/sbin
libudevdir = $(prefix)/$(SYSTEMDPATH)/udev

View File

@ -51,10 +51,10 @@ index ee396e2..19d4697 100644
void
diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
index f04ff19..fbbbb27 100644
index 0049cba..35fc0b1 100644
--- a/multipath/multipath.conf.5
+++ b/multipath/multipath.conf.5
@@ -1014,10 +1014,6 @@ The \fIWorld Wide Identification\fR of a device.
@@ -1034,10 +1034,6 @@ The \fIWorld Wide Identification\fR of a device.
.TP
.B property
Regular expression of the udev property to be whitelisted.

View File

@ -20,7 +20,7 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
5 files changed, 22 insertions(+)
diff --git a/libmultipath/config.c b/libmultipath/config.c
index bb6619b..aae69b8 100644
index 6b23601..9368962 100644
--- a/libmultipath/config.c
+++ b/libmultipath/config.c
@@ -25,6 +25,7 @@
@ -31,7 +31,7 @@ index bb6619b..aae69b8 100644
static int
hwe_strmatch (struct hwentry *hwe1, struct hwentry *hwe2)
@@ -667,6 +668,22 @@ load_config (char * file)
@@ -674,6 +675,22 @@ load_config (char * file)
factorize_hwtable(conf->hwtable, builtin_hwtable_size);
}
@ -79,7 +79,7 @@ index 4d78b98..5753766 100644
KERNEL=="dm-*", GOTO="check_kpartx"
ENV{DEVTYPE}!="partition", GOTO="test_dev"
diff --git a/multipathd/multipathd.8 b/multipathd/multipathd.8
index 4c765af..c1499a5 100644
index 2615728..0875212 100644
--- a/multipathd/multipathd.8
+++ b/multipathd/multipathd.8
@@ -39,6 +39,8 @@ map regains its maximum performance and redundancy.

View File

@ -9,14 +9,14 @@ still being generic.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
Makefile.inc | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
Makefile.inc | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/Makefile.inc b/Makefile.inc
index 2591fa9..ffcc8b6 100644
index cea015b..d6b4ef7 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -80,13 +80,19 @@ TEST_CC_OPTION = $(shell \
@@ -82,13 +82,21 @@ TEST_CC_OPTION = $(shell \
echo "$(2)"; \
fi)
@ -36,6 +36,8 @@ index 2591fa9..ffcc8b6 100644
+ ifeq ($(shell test -f /usr/lib/rpm/redhat/redhat-hardened-cc1 && echo 1),1)
+ OPTFLAGS += -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
+ endif
+else
+ OPTFLAGS = $(RPM_OPT_FLAGS)
+endif
+OPTFLAGS += -Wextra -Wstrict-prototypes -Wformat=2 -Werror=implicit-int \
+ -Werror=implicit-function-declaration -Wno-sign-compare \

View File

@ -21,10 +21,10 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
create mode 100644 multipath/mpathconf.8
diff --git a/libmultipath/config.c b/libmultipath/config.c
index aae69b8..c485748 100644
index 9368962..bdde113 100644
--- a/libmultipath/config.c
+++ b/libmultipath/config.c
@@ -672,6 +672,7 @@ load_config (char * file)
@@ -679,6 +679,7 @@ load_config (char * file)
condlog(0, "/etc/multipath.conf does not exist, blacklisting all devices.");
condlog(0, "A default multipath.conf file is located at");
condlog(0, "/usr/share/doc/device-mapper-multipath-%d.%d.%d/multipath.conf", MULTIPATH_VERSION(VERSION_CODE));

View File

@ -85,7 +85,7 @@ index 9527012..b665232 100644
#endif /* _WWIDS_H */
diff --git a/multipath/main.c b/multipath/main.c
index 4174d43..72585b0 100644
index dede017..9dda21d 100644
--- a/multipath/main.c
+++ b/multipath/main.c
@@ -102,7 +102,7 @@ usage (char * progname)

View File

@ -96,7 +96,7 @@ index 88bb72b..249c6c1 100644
}
else {
diff --git a/multipath/main.c b/multipath/main.c
index 72585b0..2eda6a3 100644
index 9dda21d..baae256 100644
--- a/multipath/main.c
+++ b/multipath/main.c
@@ -336,7 +336,7 @@ configure (struct config *conf, enum mpath_cmds cmd,
@ -109,7 +109,7 @@ index 72585b0..2eda6a3 100644
else
printf("failed adding '%s' to wwids file\n",
diff --git a/multipathd/main.c b/multipathd/main.c
index 81c76ca..874bcce 100644
index 4be2c57..fc5b18a 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -2093,7 +2093,8 @@ configure (struct vectors * vecs, int start_waiters)

View File

@ -1,56 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Fri, 26 May 2017 17:52:57 -0500
Subject: [PATCH] libmultipath: change how RADOS checker is enabled
Instead of making the user call "make", "make install" and "make clean"
with ENABLE_RADOS set correctly, have the makefile check if
/usr/include/rados/librados.h exists, just like it checks if specific
functions exist in a file.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
Makefile.inc | 13 +++++++++++++
libmultipath/checkers/Makefile | 3 ++-
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/Makefile.inc b/Makefile.inc
index ffcc8b6..ecac8eb 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -115,5 +115,18 @@ check_func = \
echo "$$found" \
)
+# Checker whether a file with name $1 exists
+check_file = $(shell \
+ if [ -f "$1" ]; then \
+ found=1; \
+ status="yes"; \
+ else \
+ found=0; \
+ status="no"; \
+ fi; \
+ echo 1>&2 "Checking if $1 exists ... $$status"; \
+ echo "$$found" \
+ )
+
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
diff --git a/libmultipath/checkers/Makefile b/libmultipath/checkers/Makefile
index 732ca9d..bce6b8b 100644
--- a/libmultipath/checkers/Makefile
+++ b/libmultipath/checkers/Makefile
@@ -14,7 +14,8 @@ LIBS= \
libcheckemc_clariion.so \
libcheckhp_sw.so \
libcheckrdac.so
-ifneq ($(ENABLE_RADOS),0)
+
+ifneq ($(call check_file,/usr/include/rados/librados.h),0)
LIBS += libcheckrbd.so
endif
--
2.7.4

View File

@ -1,40 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Wed, 31 May 2017 15:03:02 -0500
Subject: [PATCH] multipath: set verbosity to default during config
condlog was setting the verbosity to 0 if there was no configuration.
This keeps multipath from printing warning messages about config file
problems that are found while loading the configuration. Instead, it
should use the default config level until it loads the configuration
to find the current value.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmultipath/debug.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/libmultipath/debug.c b/libmultipath/debug.c
index fbe171a..f89b264 100644
--- a/libmultipath/debug.c
+++ b/libmultipath/debug.c
@@ -11,6 +11,7 @@
#include "../third-party/valgrind/drd.h"
#include "vector.h"
#include "config.h"
+#include "defaults.h"
void dlog (int sink, int prio, const char * fmt, ...)
{
@@ -21,7 +22,7 @@ void dlog (int sink, int prio, const char * fmt, ...)
va_start(ap, fmt);
conf = get_multipath_config();
ANNOTATE_IGNORE_READS_BEGIN();
- thres = (conf) ? conf->verbosity : 0;
+ thres = (conf) ? conf->verbosity : DEFAULT_VERBOSITY;
ANNOTATE_IGNORE_READS_END();
put_multipath_config(conf);
--
2.7.4

View File

@ -1,37 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Wed, 31 May 2017 17:58:59 -0500
Subject: [PATCH] mpath: skip device configs without vendor/product
Right now if multipath.conf includes a device configuration without a
vendor or product string, it will automatically be applied to all
devices, skipping all other configs entirely. This is clearly wrong.
This patch makes sure that user added configs include vendor and
product strings
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmultipath/config.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/libmultipath/config.c b/libmultipath/config.c
index c485748..bdde113 100644
--- a/libmultipath/config.c
+++ b/libmultipath/config.c
@@ -452,6 +452,13 @@ restart:
break;
j = n;
vector_foreach_slot_after(hw, hwe2, j) {
+ /* drop invalid device configs */
+ if (!hwe2->vendor || !hwe2->product) {
+ condlog(0, "device config missing vendor or product parameter");
+ vector_del_slot(hw, j--);
+ free_hwe(hwe2);
+ continue;
+ }
if (hwe_regmatch(hwe1, hwe2))
continue;
/* dup */
--
2.7.4

View File

@ -1,38 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Thu, 1 Jun 2017 17:52:28 -0500
Subject: [PATCH] multipathd: fix "show maps json" crash
If there are no multipath devices, show_maps_json sets the maximum size
of the reply buffer to 0. Having a size of 0 causes the calls to calloc
and realloc to behave in ways that the code isn't designed to handle,
leading to a double-free crash. Instead, show_maps_json should just
use the INITIAL_REPLY_LEN if there are no multipath devices.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
multipathd/cli_handlers.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c
index 04c7386..7b0d00c 100644
--- a/multipathd/cli_handlers.c
+++ b/multipathd/cli_handlers.c
@@ -162,10 +162,12 @@ show_maps_json (char ** r, int * len, struct vectors * vecs)
struct multipath * mpp;
char * c;
char * reply;
- unsigned int maxlen = INITIAL_REPLY_LEN *
- PRINT_JSON_MULTIPLIER * VECTOR_SIZE(vecs->mpvec);
+ unsigned int maxlen = INITIAL_REPLY_LEN;
int again = 1;
+ if (VECTOR_SIZE(vecs->mpvec) > 0)
+ maxlen *= PRINT_JSON_MULTIPLIER * VECTOR_SIZE(vecs->mpvec);
+
vector_foreach_slot(vecs->mpvec, mpp, i) {
if (update_multipath(vecs, mpp->alias, 0)) {
return 1;
--
2.7.4

View File

@ -1,17 +1,17 @@
Summary: Tools to manage multipath devices using device-mapper
Name: device-mapper-multipath
Version: 0.7.1
Release: 3.gitf21166a%{?dist}
Release: 4.git847cc43%{?dist}
License: GPL+
Group: System Environment/Base
URL: http://christophe.varoqui.free.fr/
# The source for this package was pulled from upstream's git repo. Use the
# following command to generate the tarball
# curl "http://git.opensvc.com/?p=multipath-tools/.git;a=snapshot;h=f21166a;sf=tgz" -o multipath-tools-f21166a.tgz
Source0: multipath-tools-f21166a.tgz
# curl "https://git.opensvc.com/?p=multipath-tools/.git;a=snapshot;h=847cc43;sf=tgz" -o multipath-tools-git847cc43.tgz
Source0: multipath-tools-git847cc43.tgz
Source1: multipath.conf
Patch0001: 0001-libmultipath-add-comment-about-resuming.patch
Patch0001: 0001-libmultipath-update-3PARdata-builtin-config.patch
Patch0002: 0002-multipath-attempt-at-common-multipath.rules.patch
Patch0003: 0003-RH-fixup-udev-rules-for-redhat.patch
Patch0004: 0004-RH-Remove-the-property-blacklist-exception-builtin.patch
@ -20,10 +20,6 @@ Patch0006: 0006-RH-use-rpm-optflags-if-present.patch
Patch0007: 0007-RH-add-mpathconf.patch
Patch0008: 0008-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
Patch0009: 0009-RH-trigger-change-uevent-on-new-device-creation.patch
Patch0010: 0010-libmultipath-change-how-RADOS-checker-is-enabled.patch
Patch0011: 0011-multipath-set-verbosity-to-default-during-config.patch
Patch0012: 0012-mpath-skip-device-configs-without-vendor-product.patch
Patch0013: 0013-multipathd-fix-show-maps-json-crash.patch
# runtime
Requires: %{name}-libs = %{version}-%{release}
@ -111,7 +107,7 @@ This package contains the files needed to develop applications that use
device-mapper-multipath's libdmmp C API library
%prep
%setup -q -n multipath-tools-f21166a
%setup -q -n multipath-tools-847cc43
%patch0001 -p1
%patch0002 -p1
%patch0003 -p1
@ -121,10 +117,6 @@ device-mapper-multipath's libdmmp C API library
%patch0007 -p1
%patch0008 -p1
%patch0009 -p1
%patch0010 -p1
%patch0011 -p1
%patch0012 -p1
%patch0013 -p1
cp %{SOURCE1} .
%build
@ -139,6 +131,7 @@ make install \
DESTDIR=%{buildroot} \
bindir=%{_sbindir} \
syslibdir=%{_libdir} \
usrlibdir=%{_libdir} \
libdir=%{_libmpathdir} \
rcdir=%{_initrddir} \
unitdir=%{_unitdir} \
@ -258,6 +251,14 @@ fi
%{_pkgconfdir}/libdmmp.pc
%changelog
* Fri Jul 21 2017 Benjamin Marzinski <bmarzins@redhat.com> 0.7.1-4.git847cc43
- Update Source to the latest upstream commit
* Previous patches 0001 and 0010-0013 are included in this commit.
- Add 0001-libmultipath-update-3PARdata-builtin-config.patch
* Change for building configuration. Posted upstream
- Modify 0006-RH-use-rpm-optflags-if-present.patch
* Add missing lines to actually use RPM_OPT_FLAGS.
* Fri Jun 23 2017 Tom Callaway <spot@fedoraproject.org> - 0.7.1-3.gitf21166a
- rebuild to resolve broken deps

View File

@ -1,2 +1,2 @@
SHA512 (multipath-tools-f21166a.tgz) = c86b5a367dbb279da2e166d9560c9d17cf076a7e790d040975e874ac0e166ce2689da4d7cad704c3add84e6b420cb3f81ebb43b4ba126155e683dc6b3ec23c6e
SHA512 (multipath.conf) = 71953dce5a68adcf60a942305f5a66023e6f4c4baf53b1bfdb4edf65ed5b8e03db804363c36d1dcfd85591f4766f52b515269904c53b84d7b076da0b80b09942
SHA512 (multipath-tools-git847cc43.tgz) = b7d9fd34a6e171d1382de2eef75c6a0fe522ff4e76b34f682c53b1662559c134bebf84dbae78d64462d1af746b7bbcbfa72ac5282d1225bfd695598dd59d7e37