Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > media > main-src > by-pkgid > e536fc0c6270ec1d92a0fd41bb1f8360 > files > 121

rgmanager-2.0.52-28.el5_8.2.src.rpm

From 0c39fc38a75ab456945b1ac2c73b1fd35dc0cf9f Mon Sep 17 00:00:00 2001
From: Lon Hohberger <lhh@redhat.com>
Date: Wed, 25 Aug 2010 13:17:24 -0400
Subject: [PATCH] rgmanager: Add non-critical base behavior

Resolves: rhbz#605733

Signed-off-by: Lon Hohberger <lhh@redhat.com>
---
 rgmanager/src/daemons/restree.c |   16 ++++++++++++++--
 1 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/rgmanager/src/daemons/restree.c b/rgmanager/src/daemons/restree.c
index 2462af2..1bb9d9a 100644
--- a/rgmanager/src/daemons/restree.c
+++ b/rgmanager/src/daemons/restree.c
@@ -703,6 +703,13 @@ do_load_resource(int ccsfd, char *base,
 		curres->r_flags &= ~RF_NON_CRITICAL;
 	}
 
+	if (curres->r_flags & RF_NON_CRITICAL) {
+		/* Independent subtree is implied if a
+		 * resource is non-critical
+		 */
+		node->rn_flags |= RF_NON_CRITICAL | RF_INDEPENDENT;
+	}
+
 	*newnode = node;
 
 	list_insert(tree, node);
@@ -1491,8 +1498,13 @@ _res_op_internal(resource_node_t __attribute__ ((unused)) **tree,
 		  the resource tree. */
 		if (op == RS_STATUS && (rv & SFL_FAILURE) &&
 		    (node->rn_flags & RF_INDEPENDENT)) {
-			mark_nodes(node, RES_FAILED,
-				   RF_NEEDSTART | RF_NEEDSTOP, 0);
+			if (node->rn_flags & RF_NON_CRITICAL)
+				/* if non-critical, just stop */
+				mark_nodes(node, RES_FAILED,
+					   RF_NEEDSTOP, 0);
+			else
+				mark_nodes(node, RES_FAILED,
+					   RF_NEEDSTOP | RF_NEEDSTART, 0);
 			rv = SFL_RECOVERABLE;
 		}
 	}
-- 
1.7.2.2