[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

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



CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL5
Changes by:	lhh sourceware org	2007-09-25 21:09:23

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=RHEL5&r1=1.31.2.26&r2=1.31.2.27
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/restree.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.23.2.11&r2=1.23.2.12

--- cluster/rgmanager/ChangeLog	2007/08/30 16:03:02	1.31.2.26
+++ cluster/rgmanager/ChangeLog	2007/09/25 21:09:23	1.31.2.27
@@ -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:03:03	1.23.2.11
+++ cluster/rgmanager/src/daemons/restree.c	2007/09/25 21:09:23	1.23.2.12
@@ -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;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]