dlm: master - dlm_controld: track membership changes

David Teigland teigland at fedoraproject.org
Wed Sep 28 19:17:01 UTC 2011


Gitweb:        http://git.fedorahosted.org/git/dlm.git?p=dlm.git;a=commitdiff;h=e529211682418a8e33feafc9f703cff87e23aeba
Commit:        e529211682418a8e33feafc9f703cff87e23aeba
Parent:        3f508eb876cd683658a9220c6c3a643dca7c3fe7
Author:        David Teigland <teigland at redhat.com>
AuthorDate:    Wed Sep 28 14:10:11 2011 -0500
Committer:     David Teigland <teigland at redhat.com>
CommitterDate: Wed Sep 28 14:16:48 2011 -0500

dlm_controld: track membership changes

Was using the wrong flag (CURRENT) to ask libquorum
for callbacks on all membership changes (CHANGES),
so they weren't being sent.

Also add some additional logging.

Signed-off-by: David Teigland <teigland at redhat.com>
---
 group/dlm_controld/dlm_daemon.h  |    1 +
 group/dlm_controld/main.c        |    1 +
 group/dlm_controld/member_cman.c |   13 ++++++++++---
 3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/group/dlm_controld/dlm_daemon.h b/group/dlm_controld/dlm_daemon.h
index cb98b3d..6ac1651 100644
--- a/group/dlm_controld/dlm_daemon.h
+++ b/group/dlm_controld/dlm_daemon.h
@@ -81,6 +81,7 @@ extern int plock_fd;
 extern int plock_ci;
 extern struct list_head lockspaces;
 extern int cluster_quorate;
+extern uint32_t cluster_ringid_seq;
 extern int our_nodeid;
 extern uint32_t control_minor;
 extern uint32_t monitor_minor;
diff --git a/group/dlm_controld/main.c b/group/dlm_controld/main.c
index 2f023ee..0f6f13a 100644
--- a/group/dlm_controld/main.c
+++ b/group/dlm_controld/main.c
@@ -1246,6 +1246,7 @@ int plock_ci;
 struct list_head lockspaces;
 int cluster_quorate;
 int our_nodeid;
+uint32_t cluster_ringid_seq;
 uint32_t control_minor;
 uint32_t monitor_minor;
 uint32_t plock_minor;
diff --git a/group/dlm_controld/member_cman.c b/group/dlm_controld/member_cman.c
index b7fa8c3..a62ec36 100644
--- a/group/dlm_controld/member_cman.c
+++ b/group/dlm_controld/member_cman.c
@@ -42,7 +42,12 @@ static void quorum_callback(quorum_handle_t h, uint32_t quorate,
 	cs_error_t err;
 	int i, j, num_addrs;
 
+
 	cluster_quorate = quorate;
+	cluster_ringid_seq = (uint32_t)ring_seq;
+
+	log_debug("cluster quorum %u seq %u nodes %u",
+		  cluster_quorate, cluster_ringid_seq, node_list_entries);
 
 	old_node_count = quorum_node_count;
 	memcpy(&old_nodes, &quorum_nodes, sizeof(old_nodes));
@@ -55,7 +60,8 @@ static void quorum_callback(quorum_handle_t h, uint32_t quorate,
 
 	for (i = 0; i < old_node_count; i++) {
 		if (!is_cluster_member(old_nodes[i])) {
-			log_debug("cluster node %u removed", old_nodes[i]);
+			log_debug("cluster node %u removed seq %u",
+				  old_nodes[i], cluster_ringid_seq);
 			node_history_cluster_remove(old_nodes[i]);
 			del_configfs_node(old_nodes[i]);
 		}
@@ -63,7 +69,8 @@ static void quorum_callback(quorum_handle_t h, uint32_t quorate,
 
 	for (i = 0; i < quorum_node_count; i++) {
 		if (!is_old_member(quorum_nodes[i])) {
-			log_debug("cluster node %u added", quorum_nodes[i]);
+			log_debug("cluster node %u added seq %u",
+				  quorum_nodes[i], cluster_ringid_seq);
 			node_history_cluster_add(quorum_nodes[i]);
 
 			err = corosync_cfg_get_node_addrs(ch, quorum_nodes[i],
@@ -127,7 +134,7 @@ int setup_cluster(void)
 		goto fail;
 	}
 
-	err = quorum_trackstart(qh, CS_TRACK_CURRENT);
+	err = quorum_trackstart(qh, CS_TRACK_CHANGES);
 	if (err != CS_OK) {
 		log_error("quorum trackstart error %d", err);
 		goto fail;


More information about the cluster-commits mailing list