d1207a7
---
d1207a7
 libmultipath/log_pthread.c |    3 +++
d1207a7
 multipathd/main.c          |   12 +++++-------
d1207a7
 2 files changed, 8 insertions(+), 7 deletions(-)
d1207a7
d1207a7
Index: multipath-tools-130222/multipathd/main.c
d1207a7
===================================================================
d1207a7
--- multipath-tools-130222.orig/multipathd/main.c
d1207a7
+++ multipath-tools-130222/multipathd/main.c
d1207a7
@@ -1473,7 +1473,9 @@ sighup (int sig)
d1207a7
 	if (running_state != DAEMON_RUNNING)
d1207a7
 		return;
d1207a7
 
d1207a7
+	lock(gvecs->lock);
d1207a7
 	reconfigure(gvecs);
d1207a7
+	unlock(gvecs->lock);
d1207a7
 
d1207a7
 #ifdef _DEBUG_
d1207a7
 	dbg_free_final(NULL);
d1207a7
@@ -1487,16 +1489,9 @@ sigend (int sig)
d1207a7
 }
d1207a7
 
d1207a7
 static void
d1207a7
-sigusr1 (int sig)
d1207a7
-{
d1207a7
-	condlog(3, "SIGUSR1 received");
d1207a7
-}
d1207a7
-
d1207a7
-static void
d1207a7
 signal_init(void)
d1207a7
 {
d1207a7
 	signal_set(SIGHUP, sighup);
d1207a7
-	signal_set(SIGUSR1, sigusr1);
d1207a7
 	signal_set(SIGINT, sigend);
d1207a7
 	signal_set(SIGTERM, sigend);
d1207a7
 	signal(SIGPIPE, SIG_IGN);
d1207a7
@@ -1652,6 +1647,7 @@ child (void * param)
d1207a7
 	 */
d1207a7
 	running_state = DAEMON_CONFIGURE;
d1207a7
 
d1207a7
+	block_signal(SIGHUP, &set);
d1207a7
 	lock(vecs->lock);
d1207a7
 	if (configure(vecs, 1)) {
d1207a7
 		unlock(vecs->lock);
d1207a7
@@ -1659,6 +1655,7 @@ child (void * param)
d1207a7
 		exit(1);
d1207a7
 	}
d1207a7
 	unlock(vecs->lock);
d1207a7
+	pthread_sigmask(SIG_SETMASK, &set, NULL);
d1207a7
 
d1207a7
 	/*
d1207a7
 	 * start threads
d1207a7
@@ -1691,6 +1688,7 @@ child (void * param)
d1207a7
 	 */
d1207a7
 	running_state = DAEMON_SHUTDOWN;
d1207a7
 	pthread_sigmask(SIG_UNBLOCK, &set, NULL);
d1207a7
+	block_signal(SIGUSR1, NULL);
d1207a7
 	block_signal(SIGHUP, NULL);
d1207a7
 	lock(vecs->lock);
d1207a7
 	if (conf->queue_without_daemon == QUE_NO_DAEMON_OFF)
d1207a7
Index: multipath-tools-130222/libmultipath/log_pthread.c
d1207a7
===================================================================
d1207a7
--- multipath-tools-130222.orig/libmultipath/log_pthread.c
d1207a7
+++ multipath-tools-130222/libmultipath/log_pthread.c
d1207a7
@@ -55,14 +55,17 @@ void log_safe (int prio, const char * fm
d1207a7
 
d1207a7
 void log_thread_flush (void)
d1207a7
 {
d1207a7
+	sigset_t old;
d1207a7
 	int empty;
d1207a7
 
d1207a7
 	do {
d1207a7
+		block_signal(SIGUSR1, &old;;
d1207a7
 		pthread_mutex_lock(&logq_lock);
d1207a7
 		empty = log_dequeue(la->buff);
d1207a7
 		pthread_mutex_unlock(&logq_lock);
d1207a7
 		if (!empty)
d1207a7
 			log_syslog(la->buff);
d1207a7
+		pthread_sigmask(SIG_SETMASK, &old, NULL);
d1207a7
 	} while (empty == 0);
d1207a7
 }
d1207a7