cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
* [Cluster-devel] cluster/group/daemon cman.c gd_internal.h join ...
@ 2007-09-17 13:47 teigland
  0 siblings, 0 replies; 2+ messages in thread
From: teigland @ 2007-09-17 13:47 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL5
Changes by:	teigland at sourceware.org	2007-09-17 13:47:58

Modified files:
	group/daemon   : cman.c gd_internal.h joinleave.c 

Log message:
	set dirty flag in cman

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/cman.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.27.2.2&r2=1.27.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/gd_internal.h.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.44.2.3&r2=1.44.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/joinleave.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.19.2.2&r2=1.19.2.3

--- cluster/group/daemon/cman.c	2006/12/14 19:54:43	1.27.2.2
+++ cluster/group/daemon/cman.c	2007/09/17 13:47:58	1.27.2.3
@@ -5,6 +5,7 @@
 #include "gd_internal.h"
 
 static cman_handle_t	ch;
+static cman_handle_t	ch_admin;
 static int		old_quorate;
 static cman_node_t	old_nodes[MAX_NODES];
 static int		old_node_count;
@@ -15,16 +16,16 @@
 
 int kill_cman(int nodeid)
 {
-	cman_handle_t ach;
+	return cman_kill_node(ch_admin, nodeid);
+}
+
+int set_cman_dirty(void)
+{
 	int rv;
 
-	ach = cman_admin_init(NULL);
-	if (!ach) {
-		log_print("cman_admin_init error %d %d", (int) ch, errno);
-		return -ENOTCONN;
-	}
-	rv = cman_kill_node(ach, nodeid);
-	cman_finish(ach);
+	rv = cman_set_dirty(ch_admin);
+	if (rv)
+		log_print("cman_set_dirty error %d", rv);
 	return rv;
 }
 
@@ -141,20 +142,24 @@
 		return -ENOTCONN;
 	}
 
+	ch_admin = cman_admin_init(NULL);
+	if (!ch_admin) {
+		log_print("cman_admin_init error %d %d", (int) ch_admin, errno);
+		rv = -ENOTCONN;
+		goto fail1;
+	}
+
 	rv = cman_start_notification(ch, cman_callback);
 	if (rv < 0) {
 		log_print("cman_start_notification error %d %d", rv, errno);
-		cman_finish(ch);
-		return rv;
+		goto fail2;
 	}
 
 	memset(&node, 0, sizeof(node));
 	rv = cman_get_node(ch, CMAN_NODEID_US, &node);
 	if (rv < 0) {
 		log_print("cman_get_node us error %d %d", rv, errno);
-		cman_stop_notification(ch);
-		cman_finish(ch);
-		goto out;
+		goto fail3;
 	}
 
 	cman_node_count = 0;
@@ -162,7 +167,7 @@
 	rv = cman_get_nodes(ch, MAX_NODES, &cman_node_count, cman_nodes);
 	if (rv < 0) {
 		log_print("cman_get_nodes error %d %d", rv, errno);
-		goto out;
+		goto fail3;
 	}
 
 	cman_quorate = cman_is_quorate(ch);
@@ -176,9 +181,14 @@
 
 	fd = cman_get_fd(ch);
 	client_add(fd, process_cman, close_cman);
+	return 0;
 
-	rv = 0;
- out:
+ fail3:
+	cman_stop_notification(ch);
+ fail2:
+	cman_finish(ch_admin);
+ fail1:
+	cman_finish(ch);
 	return rv;
 }
 
--- cluster/group/daemon/gd_internal.h	2007/02/09 16:03:24	1.44.2.3
+++ cluster/group/daemon/gd_internal.h	2007/09/17 13:47:58	1.44.2.4
@@ -277,6 +277,7 @@
 /* cman.c */
 int setup_cman(void);
 int kill_cman(int nodeid);
+int set_cman_dirty(void);
 
 /* cpg.c */
 int setup_cpg(void);
--- cluster/group/daemon/joinleave.c	2007/09/07 19:22:08	1.19.2.2
+++ cluster/group/daemon/joinleave.c	2007/09/17 13:47:58	1.19.2.3
@@ -87,6 +87,10 @@
 		goto out;
 	}
 
+	rv = set_cman_dirty();
+	if (rv)
+		goto out;
+
 	rv = create_group(name, level, &g);
 	if (rv)
 		goto out;



^ permalink raw reply	[flat|nested] 2+ messages in thread
* [Cluster-devel] cluster/group/daemon cman.c gd_internal.h join ...
@ 2007-08-20 14:50 teigland
  0 siblings, 0 replies; 2+ messages in thread
From: teigland @ 2007-08-20 14:50 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	teigland at sourceware.org	2007-08-20 14:50:32

Modified files:
	group/daemon   : cman.c gd_internal.h joinleave.c main.c 

Log message:
	Call the new cman_set_dirty() api to disallow clusters both with
	fence/dlm/gfs state from merging.
	Adjust the oom setting for the daemon to avoid oom kills.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/cman.c.diff?cvsroot=cluster&r1=1.29&r2=1.30
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/gd_internal.h.diff?cvsroot=cluster&r1=1.47&r2=1.48
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/joinleave.c.diff?cvsroot=cluster&r1=1.19&r2=1.20
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/main.c.diff?cvsroot=cluster&r1=1.57&r2=1.58

--- cluster/group/daemon/cman.c	2006/12/14 19:54:16	1.29
+++ cluster/group/daemon/cman.c	2007/08/20 14:50:30	1.30
@@ -28,6 +28,16 @@
 	return rv;
 }
 
+int set_cman_dirty(void)
+{
+	int rv;
+
+	rv = cman_set_dirty(ch);
+	if (rv)
+		log_print("cman_set_dirty error %d", rv);
+	return rv;
+}
+
 static int is_member(cman_node_t *node_list, int count, int nodeid)
 {
 	int i;
--- cluster/group/daemon/gd_internal.h	2007/02/09 16:03:15	1.47
+++ cluster/group/daemon/gd_internal.h	2007/08/20 14:50:30	1.48
@@ -277,6 +277,7 @@
 /* cman.c */
 int setup_cman(void);
 int kill_cman(int nodeid);
+int set_cman_dirty(void);
 
 /* cpg.c */
 int setup_cpg(void);
--- cluster/group/daemon/joinleave.c	2006/10/13 20:07:45	1.19
+++ cluster/group/daemon/joinleave.c	2007/08/20 14:50:30	1.20
@@ -85,6 +85,10 @@
 		goto out;
 	}
 
+	rv = set_cman_dirty();
+	if (rv)
+		goto out;
+
 	rv = create_group(name, level, &g);
 	if (rv)
 		goto out;
--- cluster/group/daemon/main.c	2007/01/11 17:59:00	1.57
+++ cluster/group/daemon/main.c	2007/08/20 14:50:30	1.58
@@ -904,6 +904,18 @@
 	}
 }
 
+void set_oom_adj(int val)
+{
+	FILE *fp;
+
+	fp = fopen("/proc/self/oom_adj", "w");
+	if (!fp)
+		return;
+
+	fprintf(fp, "%i", val);
+	fclose(fp);
+}
+
 void set_scheduler(void)
 {
 	struct sched_param sched_param;
@@ -939,8 +951,7 @@
 		write(fd, now_ascii, strlen(now_ascii));
 		write(fd, " groupd segfault log follows:\n", 30);
 		close(fd);
-	}
-	else
+	} else
 		perror(LOG_FILE);
 	if (sig == SIGSEGV)
 		exit(0);
@@ -960,10 +971,12 @@
 
 	signal(SIGSEGV, bail_with_log);
 	signal(SIGUSR1, bail_with_log);
+
 	if (!groupd_debug_opt)
 		daemonize();
 
 	set_scheduler();
+	set_oom_adj(-16);
 
 	pollfd = malloc(NALLOC * sizeof(struct pollfd));
 	if (!pollfd)



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2007-09-17 13:47 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-09-17 13:47 [Cluster-devel] cluster/group/daemon cman.c gd_internal.h join teigland
  -- strict thread matches above, loose matches on Subject: below --
2007-08-20 14:50 teigland

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).