Blame SOURCES/lvm2-2_02_169-clvmd-add-mutex-protection-for-cpg_-call.patch

18f367
From dae4f53acb269219e876c229c8f034fcdaf3ff5a Mon Sep 17 00:00:00 2001
18f367
From: Zdenek Kabelac <zkabelac@redhat.com>
18f367
Date: Sat, 4 Feb 2017 14:47:27 +0100
18f367
Subject: [PATCH] clvmd: add mutex protection for cpg_ call
18f367
18f367
The library for corosync multicasting is not supporting multithread
18f367
usage - add local mutex to avoid parallel call of cpg_mcast_joined().
18f367
---
18f367
 WHATS_NEW                      | 1 +
18f367
 daemons/clvmd/clvmd-corosync.c | 4 ++++
18f367
 2 files changed, 5 insertions(+)
18f367
18f367
diff --git a/WHATS_NEW b/WHATS_NEW
18f367
index 8ae2df8..0b571ae 100644
18f367
--- a/WHATS_NEW
18f367
+++ b/WHATS_NEW
18f367
@@ -1,5 +1,6 @@
18f367
 Version 2.02.169 - 
18f367
 =====================================
18f367
+  Avoid parallel usage of cpg_mcast_joined() in clvmd with corosync.
18f367
   Fix segfault in lvmetad from missing NULL in daemon_reply_simple.
18f367
 
18f367
 Version 2.02.167 - 
18f367
diff --git a/daemons/clvmd/clvmd-corosync.c b/daemons/clvmd/clvmd-corosync.c
18f367
index 05c9882..2227cbf 100644
18f367
--- a/daemons/clvmd/clvmd-corosync.c
18f367
+++ b/daemons/clvmd/clvmd-corosync.c
18f367
@@ -532,6 +532,7 @@ static int _cluster_fd_callback(struct local_client *fd, char *buf, int len,
18f367
 static int _cluster_send_message(const void *buf, int msglen, const char *csid,
18f367
 				 const char *errtext)
18f367
 {
18f367
+	static pthread_mutex_t _mutex = PTHREAD_MUTEX_INITIALIZER;
18f367
 	struct iovec iov[2];
18f367
 	cs_error_t err;
18f367
 	int target_node;
18f367
@@ -546,7 +547,10 @@ static int _cluster_send_message(const void *buf, int msglen, const char *csid,
18f367
 	iov[1].iov_base = (char *)buf;
18f367
 	iov[1].iov_len = msglen;
18f367
 
18f367
+	pthread_mutex_lock(&_mutex);
18f367
 	err = cpg_mcast_joined(cpg_handle, CPG_TYPE_AGREED, iov, 2);
18f367
+	pthread_mutex_unlock(&_mutex);
18f367
+
18f367
 	return cs_to_errno(err);
18f367
 }
18f367
 
18f367
-- 
18f367
1.8.3.1
18f367