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 {
openSUSE Build Service is sponsored by