* [Cluster-devel] cluster/group/daemon app.c joinleave.c
@ 2006-10-13 20:07 teigland
0 siblings, 0 replies; only message in thread
From: teigland @ 2006-10-13 20:07 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: teigland at sourceware.org 2006-10-13 20:07:45
Modified files:
group/daemon : app.c joinleave.c
Log message:
Fix an effect of recovery mixed with joins where the node whose join
event was interrupted by the recovery can sometimes not have its
g->joining flag cleared which would cause a later unmount to hang.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/app.c.diff?cvsroot=cluster&r1=1.50&r2=1.51
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/daemon/joinleave.c.diff?cvsroot=cluster&r1=1.18&r2=1.19
--- cluster/group/daemon/app.c 2006/10/12 14:25:58 1.50
+++ cluster/group/daemon/app.c 2006/10/13 20:07:45 1.51
@@ -1610,6 +1610,12 @@
if (event_state_starting(a) || event_state_all_started(a)) {
log_group(g, "rev %d replaces current ev %d %s",
rev->nodeid, ev->nodeid, ev_state_str(ev));
+
+ /* what we do for our own join when reaching JOIN_ALL_STARTED */
+ if (is_our_join(ev)) {
+ purge_messages(g);
+ g->joining = 0;
+ }
clear_all_nodes_stopped(a);
list_del(&rev->list);
a->current_event = rev;
--- cluster/group/daemon/joinleave.c 2006/09/26 19:17:21 1.18
+++ cluster/group/daemon/joinleave.c 2006/10/13 20:07:45 1.19
@@ -116,25 +116,25 @@
}
if (g->joining) {
- log_group(g, "leave: still joining");
+ log_error(g, "leave: still joining");
return -EAGAIN;
}
if (g->leaving) {
- log_group(g, "leave: already leaving");
+ log_error(g, "leave: already leaving");
return -EBUSY;
}
if (g->app->current_event &&
g->app->current_event->nodeid == our_nodeid) {
- log_group(g, "leave: busy event %llx state %s",
+ log_error(g, "leave: busy event %llx state %s",
ev->id, ev_state_str(g->app->current_event));
return -EAGAIN;
}
list_for_each_entry(ev, &g->app->events, list) {
ASSERT(ev->nodeid != our_nodeid);
- log_group(g, "event id %llx", ev->id);
+ log_group(g, "do_leave: found queued event id %llx", ev->id);
}
log_debug("%d:%s got leave", level, name);
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2006-10-13 20:07 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-10-13 20:07 [Cluster-devel] cluster/group/daemon app.c joinleave.c teigland
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.