master - fenced: finishing off query stuff
David Teigland
teigland@fedoraproject.org
Fri Aug 8 21:57:00 GMT 2008
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=3b1db64b020d50d9bc76b21e14aef52125613914
Commit: 3b1db64b020d50d9bc76b21e14aef52125613914
Parent: 0f4625a4c35e2c3185bbd9901af8b85b2d83efff
Author: David Teigland <teigland@redhat.com>
AuthorDate: Fri Aug 8 14:30:57 2008 -0500
Committer: David Teigland <teigland@redhat.com>
CommitterDate: Fri Aug 8 16:46:55 2008 -0500
fenced: finishing off query stuff
various loose ends
Signed-off-by: David Teigland <teigland@redhat.com>
---
fence/fenced/cpg.c | 3 +++
fence/fenced/fd.h | 1 +
fence/fenced/group.c | 7 +++++--
fence/fenced/main.c | 3 +++
fence/fenced/recover.c | 5 +++++
fence/libfenced/libfenced.h | 1 +
6 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/fence/fenced/cpg.c b/fence/fenced/cpg.c
index 9cd265a..1a0ff17 100644
--- a/fence/fenced/cpg.c
+++ b/fence/fenced/cpg.c
@@ -1383,6 +1383,7 @@ int set_domain_info(struct fd *fd, struct fenced_domain *domain)
}
domain->master_nodeid = fd->master;
domain->victim_count = list_count(&fd->victims);
+ domain->current_victim = fd->current_victim;
return 0;
}
@@ -1404,6 +1405,7 @@ int set_domain_nodes(struct fd *fd, int option, int *node_count,
nodes = malloc(count * sizeof(struct fenced_node));
if (!nodes)
return -ENOMEM;
+ memset(nodes, 0, sizeof(*nodes));
n = nodes;
list_for_each_entry(memb, &cg->members, list)
@@ -1417,6 +1419,7 @@ int set_domain_nodes(struct fd *fd, int option, int *node_count,
nodes = malloc(count * sizeof(struct fenced_node));
if (!nodes)
return -ENOMEM;
+ memset(nodes, 0, sizeof(*nodes));
n = nodes;
list_for_each_entry(nh, &fd->node_history, list)
diff --git a/fence/fenced/fd.h b/fence/fenced/fd.h
index 2f54143..161d8f0 100644
--- a/fence/fenced/fd.h
+++ b/fence/fenced/fd.h
@@ -177,6 +177,7 @@ struct fd {
int master;
int joining_group;
int leaving_group;
+ int current_victim; /* for queries */
struct list_head victims;
struct list_head complete;
diff --git a/fence/fenced/group.c b/fence/fenced/group.c
index 3217518..4ba891c 100644
--- a/fence/fenced/group.c
+++ b/fence/fenced/group.c
@@ -404,7 +404,8 @@ int set_node_info_group(struct fd *fd, int nodeid, struct fenced_node *nodeinfo)
nodeinfo->victim = is_victim(fd, nodeid);
nodeinfo->member = id_in_nodeids(nodeid, cb_member_count, cb_members);
- /* FIXME: need to keep track of last fence info for nodes */
+ /* FIXME: we don't keep track of last_fenced_* in this libgroup code,
+ maybe just leave it out */
return 0;
}
@@ -415,6 +416,7 @@ int set_domain_info_group(struct fd *fd, struct fenced_domain *domain)
domain->victim_count = list_count(&fd->victims);
domain->member_count = cb_member_count;
domain->state = cb_action;
+ domain->current_victim = fd->current_victim;
return 0;
}
@@ -430,10 +432,11 @@ int set_domain_nodes_group(struct fd *fd, int option, int *node_count,
nodes = malloc(cb_member_count * sizeof(struct fenced_node));
if (!nodes)
return -ENOMEM;
+ memset(nodes, 0, sizeof(*nodes));
nodep = nodes;
for (i = 0; i < cb_member_count; i++) {
- set_node_info(fd, cb_members[i], nodep++);
+ set_node_info_group(fd, cb_members[i], nodep++);
}
out:
*node_count = cb_member_count;
diff --git a/fence/fenced/main.c b/fence/fenced/main.c
index 6bfbb0e..bc6ee11 100644
--- a/fence/fenced/main.c
+++ b/fence/fenced/main.c
@@ -353,6 +353,9 @@ static void query_domain_info(int f)
goto out;
}
+ memset(&domain, 0, sizeof(domain));
+ domain.group_mode = group_mode;
+
if (group_mode == GROUP_LIBGROUP)
rv = set_domain_info_group(fd, &domain);
else
diff --git a/fence/fenced/recover.c b/fence/fenced/recover.c
index 5b46f36..d70a876 100644
--- a/fence/fenced/recover.c
+++ b/fence/fenced/recover.c
@@ -259,10 +259,15 @@ void fence_victims(struct fd *fd)
log_level(LOG_INFO, "fencing node \"%s\"", node->name);
+ /* for queries */
+ fd->current_victim = node->nodeid;
+
query_unlock();
error = fence_node(node->name);
query_lock();
+ fd->current_victim = 0;
+
log_level(LOG_INFO, "fence \"%s\" %s", node->name,
error ? "failed" : "success");
diff --git a/fence/libfenced/libfenced.h b/fence/libfenced/libfenced.h
index 30ea210..b869136 100644
--- a/fence/libfenced/libfenced.h
+++ b/fence/libfenced/libfenced.h
@@ -16,6 +16,7 @@ struct fenced_node {
};
struct fenced_domain {
+ int group_mode;
int member_count;
int victim_count;
int master_nodeid;
More information about the Cluster-cvs
mailing list