Gitweb:
http://git.fedorahosted.org/git/dlm.git?p=dlm.git;a=commitdiff;h=e5292116...
Commit: e529211682418a8e33feafc9f703cff87e23aeba
Parent: 3f508eb876cd683658a9220c6c3a643dca7c3fe7
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Wed Sep 28 14:10:11 2011 -0500
Committer: David Teigland <teigland(a)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(a)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;