149 lines
4.0 KiB
Diff
149 lines
4.0 KiB
Diff
|
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
|
||
|
|