File pacemaker-pengine-update-dependant-actions-of-un-runnable-clones.patch of Package pacemaker.3577
commit e68b51c266e1068b53ddd320fb5e9cf4f9be142f
Author: Andrew Beekhof <andrew@beekhof.net>
Date: Fri Jun 17 10:55:18 2016 +1000
Fix: PE: Correctly update the dependant actions of un-runnable clones
diff --git a/pengine/clone.c b/pengine/clone.c
index fd47018..74b4ea6 100644
--- a/pengine/clone.c
+++ b/pengine/clone.c
@@ -927,9 +927,11 @@ clone_internal_constraints(resource_t * rsc, pe_working_set_t * data_set)
}
}
-static void
+static bool
assign_node(resource_t * rsc, node_t * node, gboolean force)
{
+ bool changed = FALSE;
+
if (rsc->children) {
GListPtr gIter = rsc->children;
@@ -937,12 +939,17 @@ assign_node(resource_t * rsc, node_t * node, gboolean force)
for (; gIter != NULL; gIter = gIter->next) {
resource_t *child_rsc = (resource_t *) gIter->data;
- native_assign_node(child_rsc, NULL, node, force);
+ changed |= native_assign_node(child_rsc, NULL, node, force);
}
- return;
+ return changed;
+ }
+ if (rsc->allocated_to != NULL) {
+ changed = true;
}
+
native_assign_node(rsc, NULL, node, force);
+ return changed;
}
static resource_t *
@@ -1264,8 +1271,9 @@ clone_update_actions_interleave(action_t * first, action_t * then, node_t * node
*/
if (type & (pe_order_runnable_left | pe_order_implies_then) /* Mandatory */ ) {
pe_rsc_info(then->rsc, "Inhibiting %s from being active", then_child->id);
- assign_node(then_child, NULL, TRUE);
- /* TODO - set changed correctly? */
+ if(assign_node(then_child, NULL, TRUE)) {
+ changed |= pe_graph_updated_then;
+ }
}
} else {