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

Lon Hohberger lon at fedoraproject.org
Fri Sep 24 22:19:59 UTC 2010


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=6dc5ed853217fa44014d29f309b2bc90a2fa3f19
Commit:        6dc5ed853217fa44014d29f309b2bc90a2fa3f19
Parent:        1631855bb29f799d71a178dffb72f5debf8cbbee
Author:        Lon Hohberger <lhh at redhat.com>
AuthorDate:    Fri Sep 24 16:45:29 2010 -0400
Committer:     Lon Hohberger <lhh at redhat.com>
CommitterDate: Fri Sep 24 18:17:22 2010 -0400

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#605733

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