Update Source to the latest upstream commit
  * Previous patches 0001-0006 are included in this commit
  * Previous patches 0007-0014 are now patches 0015-0022
Add 0001-libmultipath-fix-tur-checker-locking.patch
  * Fixed spinlock bug. posted upstream
Add 0002-multipath-fix-DEF_TIMEOUT-use.patch
  * Add missing sec to ms conversion. posted upstream
Add 0003-multipathd-remove-coalesce_paths-from-ev_add_map.patch
  * Remove unused code. posted upstream
Add 0004-multipathd-remove-unused-configure-parameter.patch
  * Remove unused code. posted upstream
Add 0005-Fix-set_no_path_retry-regression.patch
  * Fix issue with queueing and path addition. posted upstream
Add 0006-multipathd-change-spurious-uevent-msg-priority.patch
  * Change message priority to Notice. posted upstream
Add 0007-multipath-print-sysfs-state-in-fast-list-mode.patch
  * Show sysfs state correctly in fast list mode (-l). posted upstream
Add 0008-libmultipath-move-remove_map-waiter-code-to-multipat.patch
  * Move code around. posted upstream
Add 0009-move-waiter-code-from-libmultipath-to-multipathd.patch
  * Move code around. posted upstream
Add 0010-call-start_waiter_thread-before-setup_multipath.patch
  * Fix race on multipath device creations. posted upstream
Add 0011-libmultipath-add-helper-functions.patch
  * posted upstream
Add 0012-multipathd-RFC-add-new-polling-dmevents-waiter-threa.patch
  * Add alternate method of getting dmevents, that doesn't
    require a thread per device. posted upstream
Add 0013-libmultipath-condlog-log-to-stderr.patch
  * change condlog to log to stderr instead of stdout. posted upstream
Add 0014-multipathd-fix-compiler-warning-for-uev_pathfail_che.patch
  * fix indentation issue. posted upstream
		
	
			
		
			
				
	
	
		
			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
 | |
| 
 |