cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
* [Cluster-devel] cluster/cman-kernel/src membership.c
@ 2006-06-26  8:42 pcaulfield
  0 siblings, 0 replies; 9+ messages in thread
From: pcaulfield @ 2006-06-26  8:42 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL4
Changes by:	pcaulfield at sourceware.org	2006-06-26 08:42:06

Modified files:
	cman-kernel/src: membership.c 

Log message:
	If we get a Master-HELLO and we are not the master for this transition then
	kick off a new one to resolve the ambiguity.
	
	I reckon this was probably the cause of the first trouble in bz#194491

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman-kernel/src/membership.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.44.2.23&r2=1.44.2.24

--- cluster/cman-kernel/src/Attic/membership.c	2006/05/09 09:26:31	1.44.2.23
+++ cluster/cman-kernel/src/Attic/membership.c	2006/06/26 08:42:06	1.44.2.24
@@ -2882,6 +2882,13 @@
 		}
 	}
 
+	/* If we get a master hello and we are not the master then start a CHECK transition, cos the
+	   real master must have gone away in a period of confusion */
+	if (node_state != MASTER && hellomsg->flags & HELLO_FLAG_MASTER) {
+		node = find_node_by_nodeid(saddr->scl_nodeid);
+		start_transition(TRANS_CHECK, node);
+	}
+
 	return 0;
 
 }



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

* [Cluster-devel] cluster/cman-kernel/src membership.c
@ 2006-06-26  8:54 pcaulfield
  0 siblings, 0 replies; 9+ messages in thread
From: pcaulfield @ 2006-06-26  8:54 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	STABLE
Changes by:	pcaulfield at sourceware.org	2006-06-26 08:54:37

Modified files:
	cman-kernel/src: membership.c 

Log message:
	If we get a Master-HELLO and we are not the master for this transition then
	kick off a new one to resolve the ambiguity.
	
	I reckon this was probably the cause of the first trouble in bz#194491

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman-kernel/src/membership.c.diff?cvsroot=cluster&only_with_tag=STABLE&r1=1.44.2.18.6.6&r2=1.44.2.18.6.7

--- cluster/cman-kernel/src/Attic/membership.c	2006/05/09 10:37:08	1.44.2.18.6.6
+++ cluster/cman-kernel/src/Attic/membership.c	2006/06/26 08:54:36	1.44.2.18.6.7
@@ -2882,6 +2882,13 @@
 		}
 	}
 
+	/* If we get a master hello and we are not the master then start a CHECK transition, cos the
+	   real master must have gone away in a period of confusion */
+	if (node_state != MASTER && hellomsg->flags & HELLO_FLAG_MASTER) {
+		node = find_node_by_nodeid(saddr->scl_nodeid);
+		start_transition(TRANS_CHECK, node);
+	}
+
 	return 0;
 
 }



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

* [Cluster-devel] cluster/cman-kernel/src membership.c
@ 2006-06-26 14:13 pcaulfield
  0 siblings, 0 replies; 9+ messages in thread
From: pcaulfield @ 2006-06-26 14:13 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL4U4
Changes by:	pcaulfield at sourceware.org	2006-06-26 14:13:35

Modified files:
	cman-kernel/src: membership.c 

Log message:
	If we get a Master-HELLO and we are not the master for this transition then
	kick off a new one to resolve the ambiguity.
	
	I reckon this was probably the cause of the first trouble in bz#194491

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman-kernel/src/membership.c.diff?cvsroot=cluster&only_with_tag=RHEL4U4&r1=1.44.2.23&r2=1.44.2.23.2.1

--- cluster/cman-kernel/src/Attic/membership.c	2006/05/09 09:26:31	1.44.2.23
+++ cluster/cman-kernel/src/Attic/membership.c	2006/06/26 14:13:34	1.44.2.23.2.1
@@ -2882,6 +2882,13 @@
 		}
 	}
 
+	/* If we get a master hello and we are not the master then start a CHECK transition, cos the
+	   real master must have gone away in a period of confusion */
+	if (node_state != MASTER && hellomsg->flags & HELLO_FLAG_MASTER) {
+		node = find_node_by_nodeid(saddr->scl_nodeid);
+		start_transition(TRANS_CHECK, node);
+	}
+
 	return 0;
 
 }



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

* [Cluster-devel] cluster/cman-kernel/src membership.c
@ 2007-01-18 15:08 pcaulfield
  0 siblings, 0 replies; 9+ messages in thread
From: pcaulfield @ 2007-01-18 15:08 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL4
Changes by:	pcaulfield at sourceware.org	2007-01-18 15:08:35

Modified files:
	cman-kernel/src: membership.c 

Log message:
	Fix race that could panic if cman_kill_node() is called when we are
	shutting down.
	bz#223098

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman-kernel/src/membership.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.44.2.24&r2=1.44.2.25

--- cluster/cman-kernel/src/Attic/membership.c	2006/06/26 08:42:06	1.44.2.24
+++ cluster/cman-kernel/src/Attic/membership.c	2007/01/18 15:08:35	1.44.2.25
@@ -1364,7 +1364,7 @@
 	 * list and wake it */
 	if (current != membership_task) {
 		struct cl_new_dead_node *newnode =
-		    kmalloc(sizeof (struct cl_new_dead_node), GFP_KERNEL);
+			kmalloc(sizeof (struct cl_new_dead_node), GFP_KERNEL);
 		if (!newnode)
 			return;
 		newnode->node = node;
@@ -1372,7 +1372,10 @@
 		list_add_tail(&newnode->list, &new_dead_node_list);
 		set_bit(WAKE_FLAG_DEADNODE, &wake_flags);
 		spin_unlock(&new_dead_node_lock);
-		wake_up_process(membership_task);
+		spin_lock(&membership_task_lock);
+		if (membership_task)
+			wake_up_process(membership_task);
+		spin_unlock(&membership_task_lock);
 		P_MEMB("Passing dead node %s onto kmembershipd\n", node->name);
 		return;
 	}



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

* [Cluster-devel] cluster/cman-kernel/src membership.c
@ 2007-01-18 15:10 pcaulfield
  0 siblings, 0 replies; 9+ messages in thread
From: pcaulfield @ 2007-01-18 15:10 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	STABLE
Changes by:	pcaulfield at sourceware.org	2007-01-18 15:10:19

Modified files:
	cman-kernel/src: membership.c 

Log message:
	Fix race that could panic if cman_kill_node() is called when we are             shutting down.
	bz#223098

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman-kernel/src/membership.c.diff?cvsroot=cluster&only_with_tag=STABLE&r1=1.44.2.18.6.7&r2=1.44.2.18.6.8

--- cluster/cman-kernel/src/Attic/membership.c	2006/06/26 08:54:36	1.44.2.18.6.7
+++ cluster/cman-kernel/src/Attic/membership.c	2007/01/18 15:10:19	1.44.2.18.6.8
@@ -1364,7 +1364,7 @@
 	 * list and wake it */
 	if (current != membership_task) {
 		struct cl_new_dead_node *newnode =
-		    kmalloc(sizeof (struct cl_new_dead_node), GFP_KERNEL);
+			kmalloc(sizeof (struct cl_new_dead_node), GFP_KERNEL);
 		if (!newnode)
 			return;
 		newnode->node = node;
@@ -1372,7 +1372,10 @@
 		list_add_tail(&newnode->list, &new_dead_node_list);
 		set_bit(WAKE_FLAG_DEADNODE, &wake_flags);
 		spin_unlock(&new_dead_node_lock);
-		wake_up_process(membership_task);
+		spin_lock(&membership_task_lock);
+		if (membership_task)
+			wake_up_process(membership_task);
+		spin_unlock(&membership_task_lock);
 		P_MEMB("Passing dead node %s onto kmembershipd\n", node->name);
 		return;
 	}



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

* [Cluster-devel] cluster/cman-kernel/src membership.c
@ 2007-01-19 16:20 pcaulfield
  0 siblings, 0 replies; 9+ messages in thread
From: pcaulfield @ 2007-01-19 16:20 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL4
Changes by:	pcaulfield at sourceware.org	2007-01-19 16:20:14

Modified files:
	cman-kernel/src: membership.c 

Log message:
	Always queue kill messages that need ACKs, so we don't block apps
	like qdiskd.
	bz#223462

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman-kernel/src/membership.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.44.2.25&r2=1.44.2.26

--- cluster/cman-kernel/src/Attic/membership.c	2007/01/18 15:08:35	1.44.2.25
+++ cluster/cman-kernel/src/Attic/membership.c	2007/01/19 16:20:14	1.44.2.26
@@ -1068,6 +1068,12 @@
 {
 	char killmsg;
 	struct sockaddr_cl saddr;
+	int flags;
+
+	if (needack)
+		flags = MSG_QUEUE;
+	else
+		flags = MSG_NOACK;
 
 	killmsg = CLUSTER_MEM_KILL;
 
@@ -1075,7 +1081,7 @@
 	saddr.scl_port = CLUSTER_PORT_MEMBERSHIP;
 	saddr.scl_nodeid = nodeid;
 	return kcl_sendmsg(mem_socket, &killmsg, 1, &saddr,
-			   sizeof (struct sockaddr_cl), needack?0:MSG_NOACK);
+			   sizeof (struct sockaddr_cl), flags);
 }
 
 /* Tell the rest of the cluster a node has gone down */



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

* [Cluster-devel] cluster/cman-kernel/src membership.c
@ 2007-01-19 16:21 pcaulfield
  0 siblings, 0 replies; 9+ messages in thread
From: pcaulfield @ 2007-01-19 16:21 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	STABLE
Changes by:	pcaulfield at sourceware.org	2007-01-19 16:21:36

Modified files:
	cman-kernel/src: membership.c 

Log message:
	Always queue kill messages that need ACKs, so we don't block apps
	like qdiskd.
	bz#223462

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman-kernel/src/membership.c.diff?cvsroot=cluster&only_with_tag=STABLE&r1=1.44.2.18.6.8&r2=1.44.2.18.6.9

--- cluster/cman-kernel/src/Attic/membership.c	2007/01/18 15:10:19	1.44.2.18.6.8
+++ cluster/cman-kernel/src/Attic/membership.c	2007/01/19 16:21:36	1.44.2.18.6.9
@@ -1068,6 +1068,12 @@
 {
 	char killmsg;
 	struct sockaddr_cl saddr;
+	int flags;
+
+	if (needack)
+		flags = MSG_QUEUE;
+	else
+		flags = MSG_NOACK;
 
 	killmsg = CLUSTER_MEM_KILL;
 
@@ -1075,7 +1081,7 @@
 	saddr.scl_port = CLUSTER_PORT_MEMBERSHIP;
 	saddr.scl_nodeid = nodeid;
 	return kcl_sendmsg(mem_socket, &killmsg, 1, &saddr,
-			   sizeof (struct sockaddr_cl), needack?0:MSG_NOACK);
+			   sizeof (struct sockaddr_cl), flags);
 }
 
 /* Tell the rest of the cluster a node has gone down */



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

* [Cluster-devel] cluster/cman-kernel/src membership.c
@ 2007-05-03 10:19 pcaulfield
  0 siblings, 0 replies; 9+ messages in thread
From: pcaulfield @ 2007-05-03 10:19 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL4
Changes by:	pcaulfield at sourceware.org	2007-05-03 10:19:01

Modified files:
	cman-kernel/src: membership.c 

Log message:
	Add a check to the only unchecked use of "node" before calling
	start_transition().
	
	This might fix bz#233521

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman-kernel/src/membership.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.44.2.26&r2=1.44.2.27

--- cluster/cman-kernel/src/Attic/membership.c	2007/01/19 16:20:14	1.44.2.26
+++ cluster/cman-kernel/src/Attic/membership.c	2007/05/03 10:19:01	1.44.2.27
@@ -2895,7 +2895,8 @@
 	   real master must have gone away in a period of confusion */
 	if (node_state != MASTER && hellomsg->flags & HELLO_FLAG_MASTER) {
 		node = find_node_by_nodeid(saddr->scl_nodeid);
-		start_transition(TRANS_CHECK, node);
+		if (node)
+			start_transition(TRANS_CHECK, node);
 	}
 
 	return 0;



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

* [Cluster-devel] cluster/cman-kernel/src membership.c
@ 2007-09-19 15:01 pcaulfield
  0 siblings, 0 replies; 9+ messages in thread
From: pcaulfield @ 2007-09-19 15:01 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL4
Changes by:	pcaulfield at sourceware.org	2007-09-19 15:01:07

Modified files:
	cman-kernel/src: membership.c 

Log message:
	Add some transition start/end messages so that support can track things
	a bit easier.
	
	Master messages:
	CMAN: Initiating transition, generation 7
	CMAN: Completed transition, generation 7
	
	Slave messages:
	CMAN: Started transition, generation 7
	CMAN: Finished transition, generation 7

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman-kernel/src/membership.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.44.2.27&r2=1.44.2.28

--- cluster/cman-kernel/src/Attic/membership.c	2007/05/03 10:19:01	1.44.2.27
+++ cluster/cman-kernel/src/Attic/membership.c	2007/09/19 15:01:07	1.44.2.28
@@ -923,6 +923,8 @@
 	/* Cancel the timer */
 	del_timer(&transition_timer);
 
+	printk(KERN_INFO CMAN_NAME ": Completed transition, generation %d\n", cluster_generation);
+
 	confirm_joiner();
 
 	quorum = calculate_quorum(leavereason, leavereason?cluster_members:0, &total_votes);
@@ -1346,6 +1348,7 @@
 			strcpy(startbuf + ptr, node->name);
 			ptr += strlen(node->name) + 1;
 		}
+		printk(KERN_INFO CMAN_NAME ": Initiating transition, generation %d\n", cluster_generation);
 
 		/* If another node died then we must queue the STARTTRANS
 		 * messages so that membershipd can carry on processing the
@@ -2069,6 +2072,7 @@
 
 	del_timer(&transition_timer);
 
+	printk(KERN_INFO CMAN_NAME ": Finished transition, generation %d\n", cluster_generation);
 	/* Set our new node id */
 	if (endmsg->new_node_id && us->node_id == 0) {
 		set_nodeid(us, le32_to_cpu(endmsg->new_node_id));
@@ -2169,6 +2173,7 @@
 		return 0;
 	}
 
+	printk(KERN_INFO CMAN_NAME ": Started transition, generation %d\n", newgen);
 	P_MEMB("Got starttrans: newgen = %d, oldgen = %d, reason = %d\n",
 	       newgen, cluster_generation, startmsg->reason);
 



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

end of thread, other threads:[~2007-09-19 15:01 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-06-26 14:13 [Cluster-devel] cluster/cman-kernel/src membership.c pcaulfield
  -- strict thread matches above, loose matches on Subject: below --
2007-09-19 15:01 pcaulfield
2007-05-03 10:19 pcaulfield
2007-01-19 16:21 pcaulfield
2007-01-19 16:20 pcaulfield
2007-01-18 15:10 pcaulfield
2007-01-18 15:08 pcaulfield
2006-06-26  8:54 pcaulfield
2006-06-26  8:42 pcaulfield

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).