[device-mapper-multipath/f20] device-mapper-multipath-0.4.9-56.fc20.1
Benjamin Marzinski
bmarzins at fedoraproject.org
Tue Mar 10 21:47:43 UTC 2015
commit 35491c6fe38a9745ed5cc6b767d890dd798f5f89
Author: Benjamin Marzinski <bmarzins at redhat.com>
Date: Tue Mar 10 16:42:19 2015 -0500
device-mapper-multipath-0.4.9-56.fc20.1
Add 0074-RHBZ-1080055-orphan-paths-on-reload.patch
* orphan paths dropped from multipath device if 'multipath -r' is run
while there are failed paths
0074-RHBZ-1080055-orphan-paths-on-reload.patch | 85 ++++++++++++++++++++++++++
device-mapper-multipath.spec | 9 ++-
2 files changed, 93 insertions(+), 1 deletion(-)
---
diff --git a/0074-RHBZ-1080055-orphan-paths-on-reload.patch b/0074-RHBZ-1080055-orphan-paths-on-reload.patch
new file mode 100644
index 0000000..279de1e
--- /dev/null
+++ b/0074-RHBZ-1080055-orphan-paths-on-reload.patch
@@ -0,0 +1,85 @@
+---
+ libmultipath/structs_vec.c | 31 +++++++++++++++++++++++++++----
+ multipathd/main.c | 4 ++++
+ 2 files changed, 31 insertions(+), 4 deletions(-)
+
+Index: multipath-bz1097694/libmultipath/structs_vec.c
+===================================================================
+--- multipath-bz1097694.orig/libmultipath/structs_vec.c
++++ multipath-bz1097694/libmultipath/structs_vec.c
+@@ -280,12 +280,38 @@ update_multipath_status (struct multipat
+ return 0;
+ }
+
++void sync_paths(struct multipath *mpp, vector pathvec)
++{
++ struct path *pp;
++ struct pathgroup *pgp;
++ int found, i, j;
++
++ vector_foreach_slot (mpp->paths, pp, i) {
++ found = 0;
++ vector_foreach_slot(mpp->pg, pgp, j) {
++ if (find_slot(pgp->paths, (void *)pp) != -1) {
++ found = 1;
++ break;
++ }
++ }
++ if (!found) {
++ condlog(3, "%s dropped path %s", mpp->alias, pp->dev);
++ vector_del_slot(mpp->paths, i--);
++ orphan_path(pp);
++ }
++ }
++ update_mpp_paths(mpp, pathvec);
++ vector_foreach_slot (mpp->paths, pp, i)
++ pp->mpp = mpp;
++}
++
+ extern int
+ update_multipath_strings (struct multipath *mpp, vector pathvec)
+ {
+ if (!mpp)
+ return 1;
+
++ update_mpp_paths(mpp, pathvec);
+ condlog(4, "%s: %s", mpp->alias, __FUNCTION__);
+
+ free_multipath_attributes(mpp);
+@@ -294,6 +320,7 @@ update_multipath_strings (struct multipa
+
+ if (update_multipath_table(mpp, pathvec))
+ return 1;
++ sync_paths(mpp, pathvec);
+
+ if (update_multipath_status(mpp))
+ return 1;
+@@ -494,13 +521,9 @@ int update_multipath (struct vectors *ve
+ return 2;
+ }
+
+- free_pgvec(mpp->pg, KEEP_PATHS);
+- mpp->pg = NULL;
+-
+ if (__setup_multipath(vecs, mpp, reset))
+ return 1; /* mpp freed in setup_multipath */
+
+- adopt_paths(vecs->pathvec, mpp, 0);
+ /*
+ * compare checkers states with DM states
+ */
+Index: multipath-bz1097694/multipathd/main.c
+===================================================================
+--- multipath-bz1097694.orig/multipathd/main.c
++++ multipath-bz1097694/multipathd/main.c
+@@ -1151,6 +1151,10 @@ check_path (struct vectors * vecs, struc
+ pp->dev);
+ pp->dmstate = PSTATE_UNDEF;
+ }
++ /* if update_multipath_strings orphaned the path, quit early */
++ if (!pp->mpp)
++ return;
++
+ pp->chkrstate = newstate;
+ if (newstate != pp->state) {
+ int oldstate = pp->state;
diff --git a/device-mapper-multipath.spec b/device-mapper-multipath.spec
index bb175bf..439ad63 100644
--- a/device-mapper-multipath.spec
+++ b/device-mapper-multipath.spec
@@ -1,7 +1,7 @@
Summary: Tools to manage multipath devices using device-mapper
Name: device-mapper-multipath
Version: 0.4.9
-Release: 56%{?dist}
+Release: 56%{?dist}.1
License: GPL+
Group: System Environment/Base
URL: http://christophe.varoqui.free.fr/
@@ -78,6 +78,7 @@ Patch0070: 0070-RHBZ-1036503-blacklist-td-devs.patch
Patch0071: 0071-RHBZ-1031546-strip-dev.patch
Patch0072: 0072-RHBZ-1039199-check-loop-control.patch
Patch0073: 0073-RH-update-build-flags.patch
+Patch0074: 0074-RHBZ-1080055-orphan-paths-on-reload.patch
# runtime
Requires: %{name}-libs = %{version}-%{release}
@@ -200,6 +201,7 @@ kpartx manages partition creation and removal for device-mapper devices.
%patch0071 -p1
%patch0072 -p1
%patch0073 -p1
+%patch0074 -p1
cp %{SOURCE1} .
%build
@@ -293,6 +295,11 @@ bin/systemctl --no-reload enable multipathd.service >/dev/null 2>&1 ||:
%{_mandir}/man8/kpartx.8.gz
%changelog
+* Tue Mar 10 2015 Benjamin Marzinski <bmarzins at redhat.com> 0.4.9-56.fc20.1
+- Add 0074-RHBZ-1080055-orphan-paths-on-reload.patch
+ * orphan paths dropped from multipath device if 'multipath -r' is run
+ while there are failed paths
+
* Mon Jan 13 2014 Benjamin Marzinski <bmarzins at redhat.com> 0.4.9-56
- Add 0061-RH-display-find-mpaths.patch
* display the find_multipaths value in show config
More information about the scm-commits
mailing list