This is the mail archive of the cluster-cvs@sourceware.org mailing list for the cluster.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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 "


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]