From badfcf9fd75c65285c1a231d989346098ea1c42c Mon Sep 17 00:00:00 2001 From: Lon Hohberger <lhh@redhat.com> Date: Fri, 24 Sep 2010 16:45:29 -0400 Subject: [PATCH] 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@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 eca28f3..951dbda 100644 --- a/rgmanager/src/daemons/restree.c +++ b/rgmanager/src/daemons/restree.c @@ -1636,8 +1636,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; -- 1.7.2.2