cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
* [Cluster-devel] cluster/group/daemon cman.c
@ 2007-08-21 19:33 teigland
  0 siblings, 0 replies; 7+ messages in thread
From: teigland @ 2007-08-21 19:33 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	teigland at sourceware.org	2007-08-21 19:33:55

Modified files:
	group/daemon   : cman.c 

Log message:
	comment out the new cman_set_dirty() call; it's not working

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/cman.c.diff?cvsroot=cluster&r1=1.30&r2=1.31

--- cluster/group/daemon/cman.c	2007/08/20 14:50:30	1.30
+++ cluster/group/daemon/cman.c	2007/08/21 19:33:55	1.31
@@ -32,10 +32,13 @@
 {
 	int rv;
 
+#if 0
 	rv = cman_set_dirty(ch);
 	if (rv)
 		log_print("cman_set_dirty error %d", rv);
 	return rv;
+#endif
+	return 0;
 }
 
 static int is_member(cman_node_t *node_list, int count, int nodeid)



^ permalink raw reply	[flat|nested] 7+ messages in thread
* [Cluster-devel] cluster/group/daemon cman.c
@ 2007-08-22 13:58 teigland
  0 siblings, 0 replies; 7+ messages in thread
From: teigland @ 2007-08-22 13:58 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	teigland at sourceware.org	2007-08-22 13:58:19

Modified files:
	group/daemon   : cman.c 

Log message:
	use an admin handle from cman to call set_dirty

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/cman.c.diff?cvsroot=cluster&r1=1.31&r2=1.32

--- cluster/group/daemon/cman.c	2007/08/21 19:33:55	1.31
+++ cluster/group/daemon/cman.c	2007/08/22 13:58:19	1.32
@@ -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,30 +16,17 @@
 
 int kill_cman(int nodeid)
 {
-	cman_handle_t ach;
-	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);
-	return rv;
+	return cman_kill_node(ch_admin, nodeid);
 }
 
 int set_cman_dirty(void)
 {
 	int rv;
 
-#if 0
-	rv = cman_set_dirty(ch);
+	rv = cman_set_dirty(ch_admin);
 	if (rv)
 		log_print("cman_set_dirty error %d", rv);
 	return rv;
-#endif
-	return 0;
 }
 
 static int is_member(cman_node_t *node_list, int count, int nodeid)
@@ -154,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;
@@ -175,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);
@@ -189,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;
 }
 



^ permalink raw reply	[flat|nested] 7+ messages in thread
* [Cluster-devel] cluster/group/daemon cman.c
@ 2006-12-14 19:55 teigland
  0 siblings, 0 replies; 7+ messages in thread
From: teigland @ 2006-12-14 19:55 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL50
Changes by:	teigland at sourceware.org	2006-12-14 19:55:04

Modified files:
	group/daemon   : cman.c 

Log message:
	Switch from CMAN_DISPATCH_ONE loop to CMAN_DISPATCH_ALL to resolve
	delayed cman shutdown callbacks.
	bz 219385

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/cman.c.diff?cvsroot=cluster&only_with_tag=RHEL50&r1=1.27.4.1&r2=1.27.4.2

--- cluster/group/daemon/cman.c	2006/12/01 20:27:36	1.27.4.1
+++ cluster/group/daemon/cman.c	2006/12/14 19:55:04	1.27.4.2
@@ -10,8 +10,6 @@
 static int		old_node_count;
 static cman_node_t	cman_nodes[MAX_NODES];
 static int		cman_node_count;
-static int		cman_cb;
-static int		cman_reason;
 static char		name_buf[CMAN_MAX_NODENAME_LEN+1];
 
 
@@ -106,26 +104,18 @@
 	}
 }
 
-static void process_cman_callback(void)
+static void cman_callback(cman_handle_t h, void *private, int reason, int arg)
 {
-	switch (cman_reason) {
+	switch (reason) {
+	case CMAN_REASON_TRY_SHUTDOWN:
+		cman_replyto_shutdown(ch, 1);
+		break;
 	case CMAN_REASON_STATECHANGE:
 		statechange();
 		break;
-	default:
-		break;
 	}
 }
 
-static void cman_callback(cman_handle_t h, void *private, int reason, int arg)
-{
-	cman_cb = 1;
-	cman_reason = reason;
-
-	if (reason == CMAN_REASON_TRY_SHUTDOWN)
-		cman_replyto_shutdown(ch, 1);
-}
-
 static void close_cman(int ci)
 {
 	log_debug("cluster is down, exiting");
@@ -135,19 +125,7 @@
 static void process_cman(int ci)
 {
 	int rv;
-
-	while (1) {
-		rv = cman_dispatch(ch, CMAN_DISPATCH_ONE);
-		if (rv < 0)
-			break;
-
-		if (cman_cb) {
-			cman_cb = 0;
-			process_cman_callback();
-		} else
-			break;
-	}
-
+	rv = cman_dispatch(ch, CMAN_DISPATCH_ALL);
 	if (rv == -1 && errno == EHOSTDOWN)
 		close_cman(ci);
 }



^ permalink raw reply	[flat|nested] 7+ messages in thread
* [Cluster-devel] cluster/group/daemon cman.c
@ 2006-12-14 19:54 teigland
  0 siblings, 0 replies; 7+ messages in thread
From: teigland @ 2006-12-14 19:54 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL5
Changes by:	teigland at sourceware.org	2006-12-14 19:54:43

Modified files:
	group/daemon   : cman.c 

Log message:
	Switch from CMAN_DISPATCH_ONE loop to CMAN_DISPATCH_ALL to resolve
	delayed cman shutdown callbacks.
	bz 219385

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/cman.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.27.2.1&r2=1.27.2.2

--- cluster/group/daemon/cman.c	2006/12/01 20:27:28	1.27.2.1
+++ cluster/group/daemon/cman.c	2006/12/14 19:54:43	1.27.2.2
@@ -10,8 +10,6 @@
 static int		old_node_count;
 static cman_node_t	cman_nodes[MAX_NODES];
 static int		cman_node_count;
-static int		cman_cb;
-static int		cman_reason;
 static char		name_buf[CMAN_MAX_NODENAME_LEN+1];
 
 
@@ -106,26 +104,18 @@
 	}
 }
 
-static void process_cman_callback(void)
+static void cman_callback(cman_handle_t h, void *private, int reason, int arg)
 {
-	switch (cman_reason) {
+	switch (reason) {
+	case CMAN_REASON_TRY_SHUTDOWN:
+		cman_replyto_shutdown(ch, 1);
+		break;
 	case CMAN_REASON_STATECHANGE:
 		statechange();
 		break;
-	default:
-		break;
 	}
 }
 
-static void cman_callback(cman_handle_t h, void *private, int reason, int arg)
-{
-	cman_cb = 1;
-	cman_reason = reason;
-
-	if (reason == CMAN_REASON_TRY_SHUTDOWN)
-		cman_replyto_shutdown(ch, 1);
-}
-
 static void close_cman(int ci)
 {
 	log_debug("cluster is down, exiting");
@@ -135,19 +125,7 @@
 static void process_cman(int ci)
 {
 	int rv;
-
-	while (1) {
-		rv = cman_dispatch(ch, CMAN_DISPATCH_ONE);
-		if (rv < 0)
-			break;
-
-		if (cman_cb) {
-			cman_cb = 0;
-			process_cman_callback();
-		} else
-			break;
-	}
-
+	rv = cman_dispatch(ch, CMAN_DISPATCH_ALL);
 	if (rv == -1 && errno == EHOSTDOWN)
 		close_cman(ci);
 }



^ permalink raw reply	[flat|nested] 7+ messages in thread
* [Cluster-devel] cluster/group/daemon cman.c
@ 2006-12-14 19:54 teigland
  0 siblings, 0 replies; 7+ messages in thread
From: teigland @ 2006-12-14 19:54 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	teigland at sourceware.org	2006-12-14 19:54:16

Modified files:
	group/daemon   : cman.c 

Log message:
	Switch from CMAN_DISPATCH_ONE loop to CMAN_DISPATCH_ALL to resolve
	delayed cman shutdown callbacks.
	bz 219385

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/cman.c.diff?cvsroot=cluster&r1=1.28&r2=1.29

--- cluster/group/daemon/cman.c	2006/12/01 20:26:01	1.28
+++ cluster/group/daemon/cman.c	2006/12/14 19:54:16	1.29
@@ -10,8 +10,6 @@
 static int		old_node_count;
 static cman_node_t	cman_nodes[MAX_NODES];
 static int		cman_node_count;
-static int		cman_cb;
-static int		cman_reason;
 static char		name_buf[CMAN_MAX_NODENAME_LEN+1];
 
 
@@ -106,26 +104,18 @@
 	}
 }
 
-static void process_cman_callback(void)
+static void cman_callback(cman_handle_t h, void *private, int reason, int arg)
 {
-	switch (cman_reason) {
+	switch (reason) {
+	case CMAN_REASON_TRY_SHUTDOWN:
+		cman_replyto_shutdown(ch, 1);
+		break;
 	case CMAN_REASON_STATECHANGE:
 		statechange();
 		break;
-	default:
-		break;
 	}
 }
 
-static void cman_callback(cman_handle_t h, void *private, int reason, int arg)
-{
-	cman_cb = 1;
-	cman_reason = reason;
-
-	if (reason == CMAN_REASON_TRY_SHUTDOWN)
-		cman_replyto_shutdown(ch, 1);
-}
-
 static void close_cman(int ci)
 {
 	log_debug("cluster is down, exiting");
@@ -135,19 +125,7 @@
 static void process_cman(int ci)
 {
 	int rv;
-
-	while (1) {
-		rv = cman_dispatch(ch, CMAN_DISPATCH_ONE);
-		if (rv < 0)
-			break;
-
-		if (cman_cb) {
-			cman_cb = 0;
-			process_cman_callback();
-		} else
-			break;
-	}
-
+	rv = cman_dispatch(ch, CMAN_DISPATCH_ALL);
 	if (rv == -1 && errno == EHOSTDOWN)
 		close_cman(ci);
 }



^ permalink raw reply	[flat|nested] 7+ messages in thread
* [Cluster-devel] cluster/group/daemon cman.c
@ 2006-06-30 21:00 teigland
  0 siblings, 0 replies; 7+ messages in thread
From: teigland @ 2006-06-30 21:00 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	teigland at sourceware.org	2006-06-30 21:00:33

Modified files:
	group/daemon   : cman.c 

Log message:
	put back old check that previous commit avoided

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/cman.c.diff?cvsroot=cluster&r1=1.26&r2=1.27

--- cluster/group/daemon/cman.c	2006/06/30 15:34:50	1.26
+++ cluster/group/daemon/cman.c	2006/06/30 21:00:33	1.27
@@ -92,8 +92,10 @@
 	for (i = 0; i < old_node_count; i++) {
 		if (old_nodes[i].cn_member &&
 		    !is_cman_member(old_nodes[i].cn_nodeid)) {
+
 			log_debug("cman: node %d removed",
 				  old_nodes[i].cn_nodeid);
+
 			rs = get_recovery_set(old_nodes[i].cn_nodeid);
 			rs->cman_update = 1;
 
@@ -102,7 +104,10 @@
 					  rs->nodeid);
 				list_del(&rs->list);
 				free(rs);
-			} else if (rs->cpg_update && list_empty(&rs->entries)) {
+				continue;
+			}
+
+			if (rs->cpg_update && list_empty(&rs->entries)) {
 				log_debug("free unused recovery set %d cman",
 					  rs->nodeid);
 				list_del(&rs->list);



^ permalink raw reply	[flat|nested] 7+ messages in thread
* [Cluster-devel] cluster/group/daemon cman.c
@ 2006-06-30 15:34 teigland
  0 siblings, 0 replies; 7+ messages in thread
From: teigland @ 2006-06-30 15:34 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	teigland at sourceware.org	2006-06-30 15:34:50

Modified files:
	group/daemon   : cman.c 

Log message:
	to be consistent, <libcman.h> instead of "libcman.h"

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/cman.c.diff?cvsroot=cluster&r1=1.25&r2=1.26

--- cluster/group/daemon/cman.c	2006/06/30 15:29:17	1.25
+++ cluster/group/daemon/cman.c	2006/06/30 15:34:50	1.26
@@ -1,8 +1,8 @@
 
 /* Interface with openais's cman API */
 
+#include <libcman.h>
 #include "gd_internal.h"
-#include "libcman.h"
 
 static cman_handle_t	ch;
 static int		old_quorate;



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

end of thread, other threads:[~2007-08-22 13:58 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-21 19:33 [Cluster-devel] cluster/group/daemon cman.c teigland
  -- strict thread matches above, loose matches on Subject: below --
2007-08-22 13:58 teigland
2006-12-14 19:55 teigland
2006-12-14 19:54 teigland
2006-12-14 19:54 teigland
2006-06-30 21:00 teigland
2006-06-30 15:34 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).