[Cluster-devel] cluster/rgmanager ChangeLog src/daemons/rg_state.c
lhh at sourceware.org
lhh at sourceware.org
Wed Sep 27 12:22:41 UTC 2006
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL4
Changes by: lhh at sourceware.org 2006-09-27 12:22:41
Modified files:
rgmanager : ChangeLog
rgmanager/src/daemons: rg_state.c
Log message:
Fix failed->disabled state transitions; #208011
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.5.2.21&r2=1.5.2.22
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_state.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.4.2.14&r2=1.4.2.15
--- cluster/rgmanager/ChangeLog 2006/09/07 18:39:45 1.5.2.21
+++ cluster/rgmanager/ChangeLog 2006/09/27 12:22:41 1.5.2.22
@@ -1,3 +1,7 @@
+2006-09-27 Lon Hohberger <lhh at redhat.com>
+ * src/daemons/rg_state.c: Fix fail->disable state transitions,
+ bugzilla #208011
+
2006-09-07 Lon Hohberger <lhh at redhat.com>
* src/daemons/main.c, init.d/rgmanager: Make rgmanager init script
report failure correctly in most cases. (#193603)
--- cluster/rgmanager/src/daemons/rg_state.c 2006/06/16 19:57:52 1.4.2.14
+++ cluster/rgmanager/src/daemons/rg_state.c 2006/09/27 12:22:41 1.4.2.15
@@ -879,6 +879,7 @@
void *lockp = NULL;
rg_state_t svcStatus;
int ret;
+ int old_state;
if (!rg_quorate()) {
clulog(LOG_WARNING, "#69: Unclean %s of %s\n",
@@ -918,6 +919,8 @@
break;
}
+ old_state = svcStatus.rs_state;
+
clulog(LOG_NOTICE, "Stopping service %s\n", svcName);
if (recover)
@@ -937,7 +940,14 @@
ret = group_op(svcName, RG_STOP);
- _svc_stop_finish(svcName, ret, newstate);
+ if (old_state == RG_STATE_FAILED && newstate == RG_STATE_DISABLED) {
+ if (ret)
+ clulog(LOG_ALERT, "Marking %s as 'disabled', "
+ "but some resources may still be allocated!\n");
+ _svc_stop_finish(svcName, 0, newstate);
+ } else {
+ _svc_stop_finish(svcName, ret, newstate);
+ }
return ret;
}
More information about the Cluster-devel
mailing list