This is the mail archive of the
cluster-cvs@sourceware.org
mailing list for the cluster.
fence: master - fenced: remove groupd compat
- From: David Teigland <teigland at fedoraproject dot org>
- To: cluster-cvs-relay at redhat dot com
- Date: Fri, 9 Jan 2009 20:03:57 +0000 (UTC)
- Subject: fence: master - fenced: remove groupd compat
Gitweb: http://git.fedorahosted.org/git/fence.git?p=fence.git;a=commitdiff;h=4465908b0d39cad37429c7553d8d6c63c7a45882
Commit: 4465908b0d39cad37429c7553d8d6c63c7a45882
Parent: e2610a97a0415c4aab31b19d90005a9cdfa5824b
Author: David Teigland <teigland@redhat.com>
AuthorDate: Fri Jan 9 14:08:01 2009 -0600
Committer: David Teigland <teigland@redhat.com>
CommitterDate: Fri Jan 9 14:08:56 2009 -0600
fenced: remove groupd compat
Signed-off-by: David Teigland <teigland@redhat.com>
---
fence/fenced/Makefile | 6 +-
fence/fenced/config.c | 5 -
fence/fenced/config.h | 3 -
fence/fenced/fd.h | 29 ---
fence/fenced/group.c | 487 --------------------------------------------
fence/fenced/main.c | 91 +-------
fence/fenced/member_cman.c | 2 +-
fence/fenced/recover.c | 8 +-
8 files changed, 14 insertions(+), 617 deletions(-)
diff --git a/fence/fenced/Makefile b/fence/fenced/Makefile
index 4ae9ac5..17b8663 100644
--- a/fence/fenced/Makefile
+++ b/fence/fenced/Makefile
@@ -12,7 +12,6 @@ include $(OBJDIR)/make/uninstall.mk
OBJS= config.o \
cpg.o \
- group.o \
main.o \
member_cman.o \
recover.o \
@@ -20,18 +19,15 @@ OBJS= config.o \
CFLAGS += -D_FILE_OFFSET_BITS=64
CFLAGS += -I${ccsincdir} -I${cmanincdir} -I${logtincdir} -I${corosyncincdir}
-CFLAGS += -I${groupincdir} -I${fenceincdir}
+CFLAGS += -I${fenceincdir}
CFLAGS += -I$(S) -I$(S)/../include -I$(S)/../libfenced
CFLAGS += -I${incdir}
LDFLAGS += -L${ccslibdir} -L${cmanlibdir} -L${logtlibdir} -lccs -lcman -llogthread
LDFLAGS += -L${fencelibdir} -lfence
LDFLAGS += -L${corosynclibdir} -lcpg -lpthread
-LDFLAGS += -L${grouplibdir} -l group
LDFLAGS += -L${libdir}
-LDDEPS += ${grouplibdir}/libgroup.a
-
${TARGET}: ${OBJS} ${LDDEPS}
$(CC) -o $@ $^ $(LDFLAGS)
diff --git a/fence/fenced/config.c b/fence/fenced/config.c
index e40d653..5f93b42 100644
--- a/fence/fenced/config.c
+++ b/fence/fenced/config.c
@@ -6,7 +6,6 @@ int ccs_handle;
/* was a config value set on command line?, 0 or 1. */
-int optd_groupd_compat;
int optd_debug_logfile;
int optd_clean_start;
int optd_skip_undefined;
@@ -17,7 +16,6 @@ int optd_override_path;
/* actual config value from command line, cluster.conf, or default. */
-int cfgd_groupd_compat = DEFAULT_GROUPD_COMPAT;
int cfgd_debug_logfile = DEFAULT_DEBUG_LOGFILE;
int cfgd_clean_start = DEFAULT_CLEAN_START;
int cfgd_skip_undefined = DEFAULT_SKIP_UNDEFINED;
@@ -103,7 +101,6 @@ void read_ccs_int(char *path, int *config_val)
}
#define OUR_NAME_PATH "/cluster/clusternodes/clusternode[@name=\"%s\"]/@name"
-#define GROUPD_COMPAT_PATH "/cluster/group/@groupd_compat"
#define CLEAN_START_PATH "/cluster/fence_daemon/@clean_start"
#define POST_JOIN_DELAY_PATH "/cluster/fence_daemon/@post_join_delay"
#define POST_FAIL_DELAY_PATH "/cluster/fence_daemon/@post_fail_delay"
@@ -164,8 +161,6 @@ int read_ccs(struct fd *fd)
if (str)
free(str);
- if (!optd_groupd_compat)
- read_ccs_int(GROUPD_COMPAT_PATH, &cfgd_groupd_compat);
if (!optd_clean_start)
read_ccs_int(CLEAN_START_PATH, &cfgd_clean_start);
diff --git a/fence/fenced/config.h b/fence/fenced/config.h
index 8152787..ee6f5cc 100644
--- a/fence/fenced/config.h
+++ b/fence/fenced/config.h
@@ -1,7 +1,6 @@
#ifndef __CONFIG_DOT_H__
#define __CONFIG_DOT_H__
-#define DEFAULT_GROUPD_COMPAT 2
#define DEFAULT_DEBUG_LOGFILE 0
#define DEFAULT_CLEAN_START 0
#define DEFAULT_SKIP_UNDEFINED 0
@@ -10,7 +9,6 @@
#define DEFAULT_OVERRIDE_TIME 3
#define DEFAULT_OVERRIDE_PATH "/var/run/cluster/fenced_override"
-extern int optd_groupd_compat;
extern int optd_debug_logfile;
extern int optd_clean_start;
extern int optd_skip_undefined;
@@ -19,7 +17,6 @@ extern int optd_post_fail_delay;
extern int optd_override_time;
extern int optd_override_path;
-extern int cfgd_groupd_compat;
extern int cfgd_debug_logfile;
extern int cfgd_clean_start;
extern int cfgd_skip_undefined;
diff --git a/fence/fenced/fd.h b/fence/fenced/fd.h
index ed2b318..2dd9418 100644
--- a/fence/fenced/fd.h
+++ b/fence/fenced/fd.h
@@ -54,11 +54,6 @@
#define MAXLINE 256
-/* group_mode */
-
-#define GROUP_LIBGROUP 2
-#define GROUP_LIBCPG 3
-
extern int daemon_debug_opt;
extern int daemon_quit;
extern int cluster_down;
@@ -70,7 +65,6 @@ extern char daemon_debug_buf[256];
extern char dump_buf[FENCED_DUMP_SIZE];
extern int dump_point;
extern int dump_wrap;
-extern int group_mode;
extern void daemon_dump_save(void);
@@ -174,16 +168,6 @@ struct fd {
int current_victim; /* for queries */
struct list_head victims;
struct list_head complete;
-
- /* libgroup domain membership */
-
- int last_stop;
- int last_start;
- int last_finish;
- int first_recovery;
- int prev_count;
- struct list_head prev;
- struct list_head leaving;
};
/* config.c */
@@ -217,19 +201,6 @@ int set_domain_nodes(struct fd *fd, int option, int *node_count,
struct fenced_node **nodes);
int in_daemon_member_list(int nodeid);
-/* group.c */
-
-void process_groupd(int ci);
-int setup_groupd(void);
-void close_groupd(void);
-int fd_join_group(struct fd *fd);
-int fd_leave_group(struct fd *fd);
-int set_node_info_group(struct fd *fd, int nodeid, struct fenced_node *node);
-int set_domain_info_group(struct fd *fd, struct fenced_domain *domain);
-int set_domain_nodes_group(struct fd *fd, int option, int *node_count,
- struct fenced_node **nodes);
-int set_group_mode(void);
-
/* main.c */
void client_dead(int ci);
diff --git a/fence/fenced/group.c b/fence/fenced/group.c
deleted file mode 100644
index 2f95550..0000000
--- a/fence/fenced/group.c
+++ /dev/null
@@ -1,487 +0,0 @@
-#include "fd.h"
-#include "config.h"
-#include "libgroup.h"
-
-#define DO_STOP 1
-#define DO_START 2
-#define DO_FINISH 3
-#define DO_TERMINATE 4
-#define DO_SETID 5
-
-#define GROUPD_TIMEOUT 10 /* seconds */
-
-/* save all the params from callback functions here because we can't
- do the processing within the callback function itself */
-
-static group_handle_t gh;
-static int cb_action;
-static char cb_name[MAX_GROUPNAME_LEN+1];
-static int cb_event_nr;
-static int cb_id;
-static int cb_type;
-static int cb_member_count;
-static int cb_members[MAX_NODES];
-
-
-static void stop_cbfn(group_handle_t h, void *private, char *name)
-{
- cb_action = DO_STOP;
- strcpy(cb_name, name);
-}
-
-static void start_cbfn(group_handle_t h, void *private, char *name,
- int event_nr, int type, int member_count, int *members)
-{
- int i;
-
- cb_action = DO_START;
- strcpy(cb_name, name);
- cb_event_nr = event_nr;
- cb_type = type;
- cb_member_count = member_count;
-
- for (i = 0; i < member_count; i++)
- cb_members[i] = members[i];
-}
-
-static void finish_cbfn(group_handle_t h, void *private, char *name,
- int event_nr)
-{
- cb_action = DO_FINISH;
- strcpy(cb_name, name);
- cb_event_nr = event_nr;
-}
-
-static void terminate_cbfn(group_handle_t h, void *private, char *name)
-{
- cb_action = DO_TERMINATE;
- strcpy(cb_name, name);
-}
-
-static void setid_cbfn(group_handle_t h, void *private, char *name,
- int unsigned id)
-{
- cb_action = DO_SETID;
- strcpy(cb_name, name);
- cb_id = id;
-}
-
-group_callbacks_t callbacks = {
- stop_cbfn,
- start_cbfn,
- finish_cbfn,
- terminate_cbfn,
- setid_cbfn
-};
-
-static char *str_members(void)
-{
- static char mbuf[MAXLINE];
- int i, len = 0;
-
- memset(mbuf, 0, MAXLINE);
-
- for (i = 0; i < cb_member_count; i++)
- len += sprintf(mbuf+len, "%d ", cb_members[i]);
- return mbuf;
-}
-
-static int id_in_nodeids(int nodeid, int count, int *nodeids)
-{
- int i;
-
- for (i = 0; i < count; i++) {
- if (nodeid == nodeids[i])
- return 1;
- }
- return 0;
-}
-
-static int next_complete_nodeid(struct fd *fd, int gt)
-{
- struct node *node;
- int low = -1;
-
- /* find lowest node id in fd_complete greater than gt,
- if none, return -1 */
-
- list_for_each_entry(node, &fd->complete, list) {
- if (node->nodeid <= gt)
- continue;
-
- if (low == -1)
- low = node->nodeid;
- else if (node->nodeid < low)
- low = node->nodeid;
- }
- return low;
-}
-
-static void set_master(struct fd *fd)
-{
- struct node *node;
- int low = -1;
-
- /* Find the lowest nodeid common to fd->fd_prev (newest member list)
- * and fd->fd_complete (last complete member list). */
-
- for (;;) {
- low = next_complete_nodeid(fd, low);
- if (low == -1)
- break;
-
- list_for_each_entry(node, &fd->prev, list) {
- if (low != node->nodeid)
- continue;
- goto out;
- }
- }
-
- /* Special case: we're the first and only FD member */
-
- if (fd->prev_count == 1)
- low = our_nodeid;
-
- /* We end up returning -1 when we're not the only node and we've just
- joined. Because we've just joined we weren't in the last complete
- domain group and won't be chosen as master. We defer to someone who
- _was_ in the last complete group. All we know is it isn't us. */
-
- out:
- fd->master = low;
-}
-
-static void new_prev_nodes(struct fd *fd, int member_count, int *nodeids)
-{
- struct node *node;
- int i;
-
- for (i = 0; i < member_count; i++) {
- node = get_new_node(fd, nodeids[i]);
- list_add(&node->list, &fd->prev);
- }
-
- fd->prev_count = member_count;
-}
-
-static void _add_first_victims(struct fd *fd)
-{
- struct node *prev_node, *safe;
-
- /* complete list initialised in init_nodes() to all nodes from ccs */
- if (list_empty(&fd->complete))
- log_debug("first complete list empty warning");
-
- list_for_each_entry_safe(prev_node, safe, &fd->complete, list) {
- if (!is_cman_member(prev_node->nodeid)) {
- list_del(&prev_node->list);
- list_add(&prev_node->list, &fd->victims);
- log_debug("add first victim %s", prev_node->name);
- prev_node->init_victim = 1;
- }
- }
-}
-
-static void _add_victims(struct fd *fd, int start_type, int member_count,
- int *nodeids)
-{
- struct node *node, *safe;
-
- /* nodes which haven't completed leaving when a failure restart happens
- * are dead (and need fencing) or are still members */
-
- if (start_type == GROUP_NODE_FAILED) {
- list_for_each_entry_safe(node, safe, &fd->leaving, list) {
- list_del(&node->list);
- if (id_in_nodeids(node->nodeid, member_count, nodeids))
- list_add(&node->list, &fd->complete);
- else {
- list_add(&node->list, &fd->victims);
- log_debug("add victim %u, was leaving",
- node->nodeid);
- }
- }
- }
-
- /* nodes in last completed group but missing from fr_nodeids are added
- * to victims list or leaving list, depending on the type of start. */
-
- if (list_empty(&fd->complete))
- log_debug("complete list empty warning");
-
- list_for_each_entry_safe(node, safe, &fd->complete, list) {
- if (!id_in_nodeids(node->nodeid, member_count, nodeids)) {
- list_del(&node->list);
-
- if (start_type == GROUP_NODE_FAILED)
- list_add(&node->list, &fd->victims);
- else
- list_add(&node->list, &fd->leaving);
-
- log_debug("add node %u to list %u", node->nodeid,
- start_type);
- }
- }
-}
-
-static void add_victims(struct fd *fd, int start_type, int member_count,
- int *nodeids)
-{
- /* Reset things when the last stop aborted our first
- * start, i.e. there was no finish; we got a
- * start/stop/start immediately upon joining. */
-
- if (!fd->last_finish && fd->last_stop) {
- log_debug("revert aborted first start");
- fd->last_stop = 0;
- fd->first_recovery = 0;
- free_node_list(&fd->prev);
- free_node_list(&fd->victims);
- free_node_list(&fd->leaving);
- }
-
- log_debug("add_victims stop %d start %d finish %d",
- fd->last_stop, fd->last_start, fd->last_finish);
-
- if (!fd->first_recovery) {
- fd->first_recovery = 1;
- _add_first_victims(fd);
- } else
- _add_victims(fd, start_type, member_count, nodeids);
-
- /* "prev" is just a temporary list of node structs matching the list of
- nodeids from the start; these nodes are moved to the "complete" list
- in the finish callback, and will be used to compare against the
- next set of started nodes */
-
- free_node_list(&fd->prev);
- new_prev_nodes(fd, member_count, nodeids);
-}
-
-static void clear_victims(struct fd *fd)
-{
- struct node *node, *safe;
-
- if (fd->last_finish == fd->last_start) {
- free_node_list(&fd->leaving);
- free_node_list(&fd->victims);
- }
-
- /* Save a copy of this set of nodes which constitutes the latest
- * complete group. Any of these nodes missing in the next start will
- * either be leaving or victims. For the next recovery, the lowest
- * remaining nodeid in this group will be the master. */
-
- free_node_list(&fd->complete);
- list_for_each_entry_safe(node, safe, &fd->prev, list) {
- list_del(&node->list);
- list_add(&node->list, &fd->complete);
- }
-}
-
-void process_groupd(int ci)
-{
- struct fd *fd;
- int error = -EINVAL;
-
- group_dispatch(gh);
-
- if (!cb_action)
- goto out;
-
- fd = find_fd(cb_name);
- if (!fd)
- goto out;
-
- switch (cb_action) {
- case DO_STOP:
- log_debug("stop %s", cb_name);
- fd->last_stop = fd->last_start;
- group_stop_done(gh, cb_name);
- break;
-
- case DO_START:
- log_debug("start %s %d members %s", cb_name, cb_event_nr,
- str_members());
- fd->last_start = cb_event_nr;
-
- /* we don't get a start callback until there's quorum */
-
- add_victims(fd, cb_type, cb_member_count, cb_members);
- set_master(fd);
- if (fd->master == our_nodeid) {
- delay_fencing(fd, cb_type == GROUP_NODE_JOIN);
- fence_victims(fd);
- } else {
- defer_fencing(fd);
- }
-
- group_start_done(gh, cb_name, cb_event_nr);
- fd->joining_group = 0;
- break;
-
- case DO_FINISH:
- log_debug("finish %s %d", cb_name, cb_event_nr);
- fd->last_finish = cb_event_nr;
-
- /* we get terminate callback when all have started, which means
- that the low node has successfully fenced all victims */
- clear_victims(fd);
-
- break;
-
- case DO_TERMINATE:
- log_debug("terminate %s", cb_name);
- if (!fd->leaving_group)
- log_error("process_groupd terminate not leaving");
- list_del(&fd->list);
- free_fd(fd);
- break;
-
- case DO_SETID:
- break;
- default:
- error = -EINVAL;
- }
-
- cb_action = 0;
- out:
- return;
-}
-
-int setup_groupd(void)
-{
- int rv;
-
- gh = group_init(NULL, "fence", 0, &callbacks, GROUPD_TIMEOUT);
- if (!gh) {
- log_error("group_init error %p %d", gh, errno);
- return -ENOTCONN;
- }
- rv = group_get_fd(gh);
- if (rv < 0)
- log_error("group_get_fd error %d %d", rv, errno);
- return rv;
-}
-
-void close_groupd(void)
-{
- group_exit(gh);
-}
-
-int fd_join_group(struct fd *fd)
-{
- int rv;
-
- list_add(&fd->list, &domains);
- fd->joining_group = 1;
-
- rv = group_join(gh, fd->name);
- if (rv) {
- log_error("group_join error %d", rv);
- list_del(&fd->list);
- free(fd);
- }
- return rv;
-}
-
-int fd_leave_group(struct fd *fd)
-{
- int rv;
-
- fd->leaving_group = 1;
-
- rv = group_leave(gh, fd->name);
- if (rv)
- log_error("group_leave error %d", rv);
-
- return rv;
-}
-
-int set_node_info_group(struct fd *fd, int nodeid, struct fenced_node *nodeinfo)
-{
- nodeinfo->nodeid = nodeid;
- nodeinfo->victim = is_victim(fd, nodeid);
- nodeinfo->member = id_in_nodeids(nodeid, cb_member_count, cb_members);
-
- /* FIXME: we don't keep track of last_fenced_* in this libgroup code,
- maybe just leave it out */
-
- return 0;
-}
-
-int set_domain_info_group(struct fd *fd, struct fenced_domain *domain)
-{
- domain->master_nodeid = fd->master;
- 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;
-}
-
-int set_domain_nodes_group(struct fd *fd, int option, int *node_count,
- struct fenced_node **nodes_out)
-{
- struct fenced_node *nodes = NULL, *nodep;
- int i;
-
- if (!cb_member_count)
- goto out;
-
- 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_group(fd, cb_members[i], nodep++);
- }
- out:
- *node_count = cb_member_count;
- *nodes_out = nodes;
- return 0;
-}
-
-int set_group_mode(void)
-{
- int i = 0, rv, version, limit;
-
- while (1) {
- rv = group_get_version(&version);
-
- if (rv || version < 0) {
- /* we expect to get version of -EAGAIN while groupd
- is detecting the mode of everyone; don't retry
- as long if we're not getting anything back from
- groupd */
-
- log_debug("set_group_mode get_version %d ver %d",
- rv, version);
-
- limit = (version == -EAGAIN) ? 30 : 5;
-
- if (i++ > limit) {
- log_error("cannot get groupd compatibility "
- "mode rv %d ver %d", rv, version);
- return -1;
- }
- sleep(1);
- continue;
- }
-
-
- if (version == GROUP_LIBGROUP) {
- group_mode = GROUP_LIBGROUP;
- return 0;
- } else if (version == GROUP_LIBCPG) {
- group_mode = GROUP_LIBCPG;
- return 0;
- } else {
- log_error("set_group_mode invalid ver %d", version);
- return -1;
- }
- }
-}
-
diff --git a/fence/fenced/main.c b/fence/fenced/main.c
index 807e214..411d504 100644
--- a/fence/fenced/main.c
+++ b/fence/fenced/main.c
@@ -143,8 +143,6 @@ static struct fd *create_fd(char *name)
INIT_LIST_HEAD(&fd->node_history);
INIT_LIST_HEAD(&fd->victims);
INIT_LIST_HEAD(&fd->complete);
- INIT_LIST_HEAD(&fd->prev);
- INIT_LIST_HEAD(&fd->leaving);
return fd;
}
@@ -168,8 +166,6 @@ void free_fd(struct fd *fd)
free_node_list(&fd->victims);
free_node_list(&fd->complete);
- free_node_list(&fd->prev);
- free_node_list(&fd->leaving);
free(fd);
}
@@ -219,11 +215,7 @@ static int do_join(char *name)
goto out;
}
- if (group_mode == GROUP_LIBGROUP)
- rv = fd_join_group(fd);
- else
- rv = fd_join(fd);
-
+ rv = fd_join(fd);
if (!rv)
set_cman_dirty();
out:
@@ -239,29 +231,20 @@ static int do_leave(char *name)
if (!fd)
return -EINVAL;
- if (group_mode == GROUP_LIBGROUP)
- rv = fd_leave_group(fd);
- else
- rv = fd_leave(fd);
-
+ rv = fd_leave(fd);
return rv;
}
static int do_external(char *name, char *extra, int extra_len)
{
struct fd *fd;
- int rv = 0;
fd = find_fd(name);
if (!fd)
return -EINVAL;
- if (group_mode == GROUP_LIBGROUP)
- rv = -ENOSYS;
- else
- send_external(fd, name_to_nodeid(extra));
-
- return rv;
+ send_external(fd, name_to_nodeid(extra));
+ return 0;
}
static void init_header(struct fenced_header *h, int cmd, int result,
@@ -346,10 +329,7 @@ static void query_node_info(int f, int data_nodeid)
else
nodeid = data_nodeid;
- if (group_mode == GROUP_LIBGROUP)
- rv = set_node_info_group(fd, nodeid, &node);
- else
- rv = set_node_info(fd, nodeid, &node);
+ rv = set_node_info(fd, nodeid, &node);
out:
do_reply(f, FENCED_CMD_NODE_INFO, rv, (char *)&node, sizeof(node));
}
@@ -367,12 +347,8 @@ static void query_domain_info(int f)
}
memset(&domain, 0, sizeof(domain));
- domain.group_mode = group_mode;
- if (group_mode == GROUP_LIBGROUP)
- rv = set_domain_info_group(fd, &domain);
- else
- rv = set_domain_info(fd, &domain);
+ rv = set_domain_info(fd, &domain);
out:
do_reply(f, FENCED_CMD_DOMAIN_INFO, rv, (char *)&domain, sizeof(domain));
}
@@ -391,11 +367,7 @@ static void query_domain_nodes(int f, int option, int max)
goto out;
}
- if (group_mode == GROUP_LIBGROUP)
- rv = set_domain_nodes_group(fd, option, &node_count, &nodes);
- else
- rv = set_domain_nodes(fd, option, &node_count, &nodes);
-
+ rv = set_domain_nodes(fd, option, &node_count, &nodes);
if (rv < 0) {
result = rv;
node_count = 0;
@@ -761,37 +733,9 @@ static void loop(void)
goto out;
client_add(rv, process_cpg, cluster_dead);
- group_mode = GROUP_LIBCPG;
-
- if (cfgd_groupd_compat) {
- rv = setup_groupd();
- if (rv < 0)
- goto out;
- client_add(rv, process_groupd, cluster_dead);
-
- switch (cfgd_groupd_compat) {
- case 1:
- group_mode = GROUP_LIBGROUP;
- rv = 0;
- break;
- case 2:
- rv = set_group_mode();
- break;
- default:
- log_error("inval groupd_compat %d", cfgd_groupd_compat);
- rv = -1;
- break;
- }
- if (rv < 0)
- goto out;
- }
- log_debug("group_mode %d compat %d", group_mode, cfgd_groupd_compat);
-
- if (group_mode == GROUP_LIBCPG) {
- rv = set_protocol();
- if (rv < 0)
- goto out;
- }
+ rv = set_protocol();
+ if (rv < 0)
+ goto out;
for (;;) {
rv = poll(pollfd, client_maxi + 1, -1);
@@ -826,8 +770,6 @@ static void loop(void)
break;
}
out:
- if (cfgd_groupd_compat)
- close_groupd();
close_cpg();
close_logging();
close_ccs();
@@ -889,11 +831,6 @@ static void print_usage(void)
printf("\n");
printf(" -D Enable debugging to stderr and don't fork\n");
printf(" -L Enable debugging to log file\n");
- printf(" -g <num> groupd compatibility mode, 0 off, 1 on, 2 detect (default %d)\n", DEFAULT_GROUPD_COMPAT);
- printf(" 0: use libcpg, no backward compat, best performance\n");
- printf(" 1: use libgroup for compat with cluster2/rhel5\n");
- printf(" 2: use groupd to detect old, or mode 1, nodes that\n"
- " require compat, use libcpg if none found\n");
printf(" -r <path> Register a directory that needs to be empty for\n");
printf(" the daemon to start. \"-\" to skip default directories\n");
printf(" /sys/fs/gfs, /sys/fs/gfs2, /sys/kernel/dlm\n");
@@ -912,7 +849,7 @@ static void print_usage(void)
printf("\n");
}
-#define OPTION_STRING "Lg:cj:f:Dn:O:hVSse:r:"
+#define OPTION_STRING "Lcj:f:Dn:O:hVSse:r:"
static void read_arguments(int argc, char **argv)
{
@@ -933,11 +870,6 @@ static void read_arguments(int argc, char **argv)
cfgd_debug_logfile = 1;
break;
- case 'g':
- optd_groupd_compat = 1;
- cfgd_groupd_compat = atoi(optarg);
- break;
-
case 'c':
optd_clean_start = 1;
cfgd_clean_start = 1;
@@ -1072,5 +1004,4 @@ char daemon_debug_buf[256];
char dump_buf[FENCED_DUMP_SIZE];
int dump_point;
int dump_wrap;
-int group_mode;
diff --git a/fence/fenced/member_cman.c b/fence/fenced/member_cman.c
index c99215d..fd0d9e1 100644
--- a/fence/fenced/member_cman.c
+++ b/fence/fenced/member_cman.c
@@ -141,7 +141,7 @@ static void cman_callback(cman_handle_t h, void *private, int reason, int arg)
statechange();
/* domain may have been waiting for quorum */
- if (!quorate && cman_quorate && (group_mode == GROUP_LIBCPG))
+ if (!quorate && cman_quorate)
process_fd_changes();
break;
diff --git a/fence/fenced/recover.c b/fence/fenced/recover.c
index 5853117..1a628bf 100644
--- a/fence/fenced/recover.c
+++ b/fence/fenced/recover.c
@@ -43,9 +43,6 @@ int is_victim(struct fd *fd, int nodeid)
static void victim_done(struct fd *fd, int victim, int how)
{
- if (group_mode == GROUP_LIBGROUP)
- return;
-
node_history_fence(fd, victim, our_nodeid, how, time(NULL));
send_victim_done(fd, victim);
}
@@ -257,10 +254,7 @@ void fence_victims(struct fd *fd)
cman_member = is_cman_member(node->nodeid);
cpg_member = in_daemon_member_list(node->nodeid);
- if (group_mode == GROUP_LIBCPG)
- ext = is_fenced_external(fd, node->nodeid);
- else
- ext = 0;
+ ext = is_fenced_external(fd, node->nodeid);
if ((cman_member && cpg_member) || ext) {
log_debug("averting fence of node %s "