diff options
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.patch | 148 |
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 + |
