summaryrefslogtreecommitdiffstats
path: root/0008-libmultipath-move-remove_map-waiter-code-to-multipat.patch
diff options
context:
space:
mode:
Diffstat (limited to '0008-libmultipath-move-remove_map-waiter-code-to-multipat.patch')
-rw-r--r--0008-libmultipath-move-remove_map-waiter-code-to-multipat.patch148
1 files changed, 148 insertions, 0 deletions
diff --git a/0008-libmultipath-move-remove_map-waiter-code-to-multipat.patch b/0008-libmultipath-move-remove_map-waiter-code-to-multipat.patch
new file mode 100644
index 0000000..314b7c0
--- /dev/null
+++ b/0008-libmultipath-move-remove_map-waiter-code-to-multipat.patch
@@ -0,0 +1,148 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Benjamin Marzinski <bmarzins@redhat.com>
+Date: Mon, 5 Feb 2018 16:07:36 -0600
+Subject: [PATCH] libmultipath: move remove_map waiter code to multipathd
+
+Only multipathd needs to worry about the multipath waiter code. There is
+no point in having remove_map_and_stop_waiter() or
+remove_maps_and_stop_waiters() in libmultipath, since they should never
+be use outside of multipathd.
+
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libmultipath/structs_vec.c | 40 +++++-----------------------------------
+ libmultipath/structs_vec.h | 2 --
+ multipathd/main.c | 23 +++++++++++++++++++++++
+ 3 files changed, 28 insertions(+), 37 deletions(-)
+
+diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c
+index 0de2221..abf5327 100644
+--- a/libmultipath/structs_vec.c
++++ b/libmultipath/structs_vec.c
+@@ -116,25 +116,16 @@ set_multipath_wwid (struct multipath * mpp)
+ dm_get_uuid(mpp->alias, mpp->wwid);
+ }
+
+-#define KEEP_WAITER 0
+-#define STOP_WAITER 1
+ #define PURGE_VEC 1
+
+-static void
+-_remove_map (struct multipath * mpp, struct vectors * vecs,
+- int stop_waiter, int purge_vec)
++void
++remove_map(struct multipath * mpp, struct vectors * vecs, int purge_vec)
+ {
+ int i;
+
+ condlog(4, "%s: remove multipath map", mpp->alias);
+
+ /*
+- * stop the DM event waiter thread
+- */
+- if (stop_waiter)
+- stop_waiter_thread(mpp, vecs);
+-
+- /*
+ * clear references to this map
+ */
+ orphan_paths(vecs->pathvec, mpp);
+@@ -149,19 +140,8 @@ _remove_map (struct multipath * mpp, struct vectors * vecs,
+ free_multipath(mpp, KEEP_PATHS);
+ }
+
+-void remove_map(struct multipath *mpp, struct vectors *vecs, int purge_vec)
+-{
+- _remove_map(mpp, vecs, KEEP_WAITER, purge_vec);
+-}
+-
+-void remove_map_and_stop_waiter(struct multipath *mpp, struct vectors *vecs,
+- int purge_vec)
+-{
+- _remove_map(mpp, vecs, STOP_WAITER, purge_vec);
+-}
+-
+-static void
+-_remove_maps (struct vectors * vecs, int stop_waiter)
++void
++remove_maps(struct vectors * vecs)
+ {
+ int i;
+ struct multipath * mpp;
+@@ -170,7 +150,7 @@ _remove_maps (struct vectors * vecs, int stop_waiter)
+ return;
+
+ vector_foreach_slot (vecs->mpvec, mpp, i) {
+- _remove_map(mpp, vecs, stop_waiter, 1);
++ remove_map(mpp, vecs, 1);
+ i--;
+ }
+
+@@ -178,16 +158,6 @@ _remove_maps (struct vectors * vecs, int stop_waiter)
+ vecs->mpvec = NULL;
+ }
+
+-void remove_maps(struct vectors *vecs)
+-{
+- _remove_maps(vecs, KEEP_WAITER);
+-}
+-
+-void remove_maps_and_stop_waiters(struct vectors *vecs)
+-{
+- _remove_maps(vecs, STOP_WAITER);
+-}
+-
+ void
+ extract_hwe_from_path(struct multipath * mpp)
+ {
+diff --git a/libmultipath/structs_vec.h b/libmultipath/structs_vec.h
+index b81413b..d6e17bb 100644
+--- a/libmultipath/structs_vec.h
++++ b/libmultipath/structs_vec.h
+@@ -27,9 +27,7 @@ int update_multipath_strings (struct multipath *mpp, vector pathvec,
+ void extract_hwe_from_path(struct multipath * mpp);
+
+ void remove_map (struct multipath * mpp, struct vectors * vecs, int purge_vec);
+-void remove_map_and_stop_waiter (struct multipath * mpp, struct vectors * vecs, int purge_vec);
+ void remove_maps (struct vectors * vecs);
+-void remove_maps_and_stop_waiters (struct vectors * vecs);
+
+ void sync_map_state (struct multipath *);
+ int update_map (struct multipath *mpp, struct vectors *vecs);
+diff --git a/multipathd/main.c b/multipathd/main.c
+index 7ac59d9..72c3c2f 100644
+--- a/multipathd/main.c
++++ b/multipathd/main.c
+@@ -288,6 +288,29 @@ switch_pathgroup (struct multipath * mpp)
+ mpp->alias, mpp->bestpg);
+ }
+
++static void
++remove_map_and_stop_waiter(struct multipath *mpp, struct vectors *vecs,
++ int purge_vec)
++{
++ stop_waiter_thread(mpp, vecs);
++ remove_map(mpp, vecs, purge_vec);
++}
++
++static void
++remove_maps_and_stop_waiters(struct vectors *vecs)
++{
++ int i;
++ struct multipath * mpp;
++
++ if (!vecs)
++ return;
++
++ vector_foreach_slot(vecs->mpvec, mpp, i)
++ stop_waiter_thread(mpp, vecs);
++
++ remove_maps(vecs);
++}
++
+ static int
+ coalesce_maps(struct vectors *vecs, vector nmpv)
+ {
+--
+2.7.4
+