* [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 --
2007-09-19 15:01 [Cluster-devel] cluster/cman-kernel/src membership.c pcaulfield
-- strict thread matches above, loose matches on Subject: below --
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 14:13 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).