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