cluster: RHEL6 - rgmanager: Fix corner case in critical/non-critical handling

Lon Hohberger lon at fedoraproject.org
Tue Feb 1 18:11:05 UTC 2011


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=d100504de6eff5f83dba79319ad0bd560f7a57df
Commit:        d100504de6eff5f83dba79319ad0bd560f7a57df
Parent:        c7187470032d2ab7c32a6a3ae43a358e1a99656b
Author:        Lon Hohberger <lhh at redhat.com>
AuthorDate:    Fri Sep 24 16:45:29 2010 -0400
Committer:     Lon Hohberger <lhh at redhat.com>
CommitterDate: Tue Feb 1 12:34:35 2011 -0500

rgmanager: Fix corner case in critical/non-critical handling

If a subtree had failed and you removed
__independent_subtree from the configuration for that
subtree as part of a reconfiguration operation, the
subtree would fail to stop, causing the service to enter
the failed state.

Resolves: rhbz#634277

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

diff --git a/rgmanager/src/daemons/restree.c b/rgmanager/src/daemons/restree.c
index 55cc146..9652c6e 100644
--- a/rgmanager/src/daemons/restree.c
+++ b/rgmanager/src/daemons/restree.c
@@ -1596,8 +1596,8 @@ _res_op_internal(resource_node_t __attribute__ ((unused)) **tree,
 			assert(node->rn_resource->r_incarnations >= 0);
 			if (node->rn_resource->r_incarnations > 0)
 				--node->rn_resource->r_incarnations;
-		} else if (node->rn_state != RES_DISABLED &&
-			   !(node->rn_flags & RF_QUIESCE)) {
+		} else if (rv != 0 && (node->rn_state != RES_DISABLED &&
+			   !(node->rn_flags & RF_QUIESCE))) {
 			node->rn_state = RES_FAILED;
 			pthread_mutex_unlock(&node->rn_resource->r_mutex);
 			return SFL_FAILURE;


More information about the cluster-commits mailing list