[Cluster-devel] cluster/rgmanager ChangeLog src/daemons/restree.c

lhh at sourceware.org lhh at sourceware.org
Tue Sep 25 21:06:15 UTC 2007


CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL51
Changes by:	lhh at sourceware.org	2007-09-25 21:06:15

Modified files:
	rgmanager      : ChangeLog 
	rgmanager/src/daemons: restree.c 

Log message:
	Ancillary patch for side case re: #229650 - patch from Simone Gotti.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&only_with_tag=RHEL51&r1=1.31.2.19.2.4&r2=1.31.2.19.2.5
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/restree.c.diff?cvsroot=cluster&only_with_tag=RHEL51&r1=1.23.2.8.2.3&r2=1.23.2.8.2.4

--- cluster/rgmanager/ChangeLog	2007/08/30 16:05:14	1.31.2.19.2.4
+++ cluster/rgmanager/ChangeLog	2007/09/25 21:06:15	1.31.2.19.2.5
@@ -1,3 +1,7 @@
+2007-09-25 Lon Hohberger <lhh at redhat.com>
+	* src/daemons/restree.c: Apply patch to fix side case re: 229650
+	Patch from Simone Gotti. Resolves: #229650
+
 2007-08-30 Lon Hohberger <lhh at redhat.com>
        * src/daemons/restree.c, rg_state.c: Fix tree-restart bug
        This is another part of #229650
--- cluster/rgmanager/src/daemons/restree.c	2007/08/30 16:05:14	1.23.2.8.2.3
+++ cluster/rgmanager/src/daemons/restree.c	2007/09/25 21:06:15	1.23.2.8.2.4
@@ -1242,9 +1242,23 @@
 
 	}
 
-	if (node->rn_child)
-		rv |= _res_op_by_level(&node, me?NULL:first, ret, op);
+       if (node->rn_child) {
+                rv |= _res_op_by_level(&node, me?NULL:first, ret, op);
 
+               /* If one or more child resources are failed and at least one
+		  of them is not an independent subtree then let's check if
+		  if we are an independent subtree.  If so, mark ourself
+		  and all our children as failed and return a flag stating
+		  that this section is recoverable apart from siblings in
+		  the resource tree. */
+		if (op == RS_STATUS && (rv & SFL_FAILURE) &&
+		    (node->rn_flags & RF_INDEPENDENT)) {
+			mark_nodes(node, RES_FAILED,
+				   RF_NEEDSTART | RF_NEEDSTOP);
+			rv = SFL_RECOVERABLE;
+		}
+	}
+ 			
 	/* Stop should occur after children have stopped */
 	if (me && (op == RS_STOP)) {
 		node->rn_flags &= ~RF_NEEDSTOP;




More information about the Cluster-devel mailing list