then 164 include/pcmki/pcmki_sched_allocate.h enum pe_graph_flags native_update_actions(pe_action_t *first, pe_action_t *then, then 170 include/pcmki/pcmki_sched_allocate.h enum pe_graph_flags group_update_actions(pe_action_t *first, pe_action_t *then, then 177 include/pcmki/pcmki_sched_allocate.h pe_action_t *then, then 24 lib/pacemaker/pcmk_graph_producer.c gboolean rsc_update_action(pe_action_t * first, pe_action_t * then, enum pe_ordering type); then 177 lib/pacemaker/pcmk_graph_producer.c graph_update_action(pe_action_t * first, pe_action_t * then, pe_node_t * node, then 202 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, then 205 lib/pacemaker/pcmk_graph_producer.c first->uuid, then->uuid, node->details->uname); then 209 lib/pacemaker/pcmk_graph_producer.c if (then->rsc) { then 210 lib/pacemaker/pcmk_graph_producer.c changed |= then->rsc->cmds->update_actions(first, then, node, then 215 lib/pacemaker/pcmk_graph_producer.c && pcmk_is_set(then->flags, pe_action_optional)) { then 216 lib/pacemaker/pcmk_graph_producer.c pe__clear_action_flags(then, pe_action_optional); then 219 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, "%s then %s: %s after pe_order_implies_then", then 220 lib/pacemaker/pcmk_graph_producer.c first->uuid, then->uuid, then 224 lib/pacemaker/pcmk_graph_producer.c if ((type & pe_order_restart) && then->rsc) { then 227 lib/pacemaker/pcmk_graph_producer.c changed |= then->rsc->cmds->update_actions(first, then, node, then 230 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, "%s then %s: %s after pe_order_restart", then 231 lib/pacemaker/pcmk_graph_producer.c first->uuid, then->uuid, then 237 lib/pacemaker/pcmk_graph_producer.c changed |= first->rsc->cmds->update_actions(first, then, node, then 246 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, "%s then %s: %s after pe_order_implies_first", then 247 lib/pacemaker/pcmk_graph_producer.c first->uuid, then->uuid, then 252 lib/pacemaker/pcmk_graph_producer.c if (then->rsc) { then 253 lib/pacemaker/pcmk_graph_producer.c changed |= then->rsc->cmds->update_actions(first, then, node, then 257 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, then 259 lib/pacemaker/pcmk_graph_producer.c first->uuid, then->uuid, then 264 lib/pacemaker/pcmk_graph_producer.c if (then->rsc) { then 265 lib/pacemaker/pcmk_graph_producer.c changed |= then->rsc->cmds->update_actions(first, then, node, then 271 lib/pacemaker/pcmk_graph_producer.c then->runnable_before++; then 276 lib/pacemaker/pcmk_graph_producer.c if ((then->runnable_before >= then->required_runnable_before) then 277 lib/pacemaker/pcmk_graph_producer.c && !pcmk_is_set(then->flags, pe_action_runnable)) { then 279 lib/pacemaker/pcmk_graph_producer.c pe__set_action_flags(then, pe_action_runnable); then 283 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, "%s then %s: %s after pe_order_one_or_more", then 284 lib/pacemaker/pcmk_graph_producer.c first->uuid, then->uuid, then 288 lib/pacemaker/pcmk_graph_producer.c if (then->rsc && pcmk_is_set(type, pe_order_probe)) { then 292 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, then 294 lib/pacemaker/pcmk_graph_producer.c first->uuid, then->uuid); then 299 lib/pacemaker/pcmk_graph_producer.c changed |= then->rsc->cmds->update_actions(first, then, node, then 303 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, "%s then %s: %s after pe_order_probe", then 304 lib/pacemaker/pcmk_graph_producer.c first->uuid, then->uuid, then 309 lib/pacemaker/pcmk_graph_producer.c if (then->rsc) { then 310 lib/pacemaker/pcmk_graph_producer.c changed |= then->rsc->cmds->update_actions(first, then, node, then 315 lib/pacemaker/pcmk_graph_producer.c && pcmk_is_set(then->flags, pe_action_runnable)) { then 317 lib/pacemaker/pcmk_graph_producer.c pe__clear_action_flags(then, pe_action_runnable); then 320 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, "%s then %s: %s after pe_order_runnable_left", then 321 lib/pacemaker/pcmk_graph_producer.c first->uuid, then->uuid, then 326 lib/pacemaker/pcmk_graph_producer.c if (then->rsc) { then 327 lib/pacemaker/pcmk_graph_producer.c changed |= then->rsc->cmds->update_actions(first, then, node, then 331 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, "%s then %s: %s after " then 333 lib/pacemaker/pcmk_graph_producer.c first->uuid, then->uuid, then 338 lib/pacemaker/pcmk_graph_producer.c if (then->rsc) { then 339 lib/pacemaker/pcmk_graph_producer.c changed |= then->rsc->cmds->update_actions(first, then, node, then 343 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, "%s then %s: %s after pe_order_pseudo_left", then 344 lib/pacemaker/pcmk_graph_producer.c first->uuid, then->uuid, then 349 lib/pacemaker/pcmk_graph_producer.c if (then->rsc) { then 350 lib/pacemaker/pcmk_graph_producer.c changed |= then->rsc->cmds->update_actions(first, then, node, then 353 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, "%s then %s: %s after pe_order_optional", then 354 lib/pacemaker/pcmk_graph_producer.c first->uuid, then->uuid, then 359 lib/pacemaker/pcmk_graph_producer.c if (then->rsc) { then 360 lib/pacemaker/pcmk_graph_producer.c changed |= then->rsc->cmds->update_actions(first, then, node, then 364 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, "%s then %s: %s after pe_order_asymmetrical", then 365 lib/pacemaker/pcmk_graph_producer.c first->uuid, then->uuid, then 371 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, "%s will be in graph because %s is required", then 372 lib/pacemaker/pcmk_graph_producer.c then->uuid, first->uuid); then 373 lib/pacemaker/pcmk_graph_producer.c pe__set_action_flags(then, pe_action_print_always); then 380 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, "%s will be in graph because %s is required", then 381 lib/pacemaker/pcmk_graph_producer.c first->uuid, then->uuid); then 395 lib/pacemaker/pcmk_graph_producer.c if (pcmk_is_set(then->flags, pe_action_runnable)) { then 396 lib/pacemaker/pcmk_graph_producer.c pe__clear_action_flags(then, pe_action_runnable); then 399 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, "%s then %s: %s after checking whether first " then 401 lib/pacemaker/pcmk_graph_producer.c first->uuid, then->uuid, then 423 lib/pacemaker/pcmk_graph_producer.c update_action(pe_action_t *then, pe_working_set_t *data_set) then 427 lib/pacemaker/pcmk_graph_producer.c int last_flags = then->flags; then 429 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, "Updating %s %s (%s %s) on %s", then 430 lib/pacemaker/pcmk_graph_producer.c action_type_str(then->flags), then->uuid, then 431 lib/pacemaker/pcmk_graph_producer.c action_optional_str(then->flags), then 432 lib/pacemaker/pcmk_graph_producer.c action_runnable_str(then->flags), action_node_str(then)); then 434 lib/pacemaker/pcmk_graph_producer.c if (pcmk_is_set(then->flags, pe_action_requires_any)) { then 439 lib/pacemaker/pcmk_graph_producer.c then->runnable_before = 0; then 444 lib/pacemaker/pcmk_graph_producer.c if (then->required_runnable_before == 0) { then 445 lib/pacemaker/pcmk_graph_producer.c then->required_runnable_before = 1; then 447 lib/pacemaker/pcmk_graph_producer.c pe__clear_action_flags(then, pe_action_runnable); then 457 lib/pacemaker/pcmk_graph_producer.c for (lpc = then->actions_before; lpc != NULL; lpc = lpc->next) { then 461 lib/pacemaker/pcmk_graph_producer.c pe_node_t *then_node = then->node; then 475 lib/pacemaker/pcmk_graph_producer.c if (then->rsc && then->rsc->variant == pe_group && pcmk__str_eq(then->task, RSC_START, pcmk__str_casei)) { then 476 lib/pacemaker/pcmk_graph_producer.c then_node = then->rsc->fns->location(then->rsc, NULL, FALSE); then 478 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, "Found node %s for 'then' %s", then 479 lib/pacemaker/pcmk_graph_producer.c then_node->details->uname, then->uuid); then 487 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, then 490 lib/pacemaker/pcmk_graph_producer.c then->uuid, then_node->details->uname); then 495 lib/pacemaker/pcmk_graph_producer.c pe__clear_graph_flags(changed, then, pe_graph_updated_first); then 498 lib/pacemaker/pcmk_graph_producer.c && !pcmk_is_set(then->flags, pe_action_optional)) { then 509 lib/pacemaker/pcmk_graph_producer.c if (first->rsc && then->rsc && (first->rsc != then->rsc) then 510 lib/pacemaker/pcmk_graph_producer.c && (is_parent(then->rsc, first->rsc) == FALSE)) { then 514 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, "Ordering %s after %s instead of %s", then 515 lib/pacemaker/pcmk_graph_producer.c then->uuid, first->uuid, other->action->uuid); then 519 lib/pacemaker/pcmk_graph_producer.c then_flags = get_action_flags(then, first_node); then 521 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, then 524 lib/pacemaker/pcmk_graph_producer.c first->uuid, then->uuid, other->type, first_flags, then 528 lib/pacemaker/pcmk_graph_producer.c first->flags, then->flags); then 544 lib/pacemaker/pcmk_graph_producer.c pe_node_t *node = then->node; then 545 lib/pacemaker/pcmk_graph_producer.c changed |= graph_update_action(first, then, node, first_flags, then 551 lib/pacemaker/pcmk_graph_producer.c } else if (order_actions(first, then, other->type)) { then 555 lib/pacemaker/pcmk_graph_producer.c pe__set_graph_flags(changed, then, then 560 lib/pacemaker/pcmk_graph_producer.c pe_rsc_trace(then->rsc, then 562 lib/pacemaker/pcmk_graph_producer.c other->action->uuid, then->uuid, first->uuid, then 563 lib/pacemaker/pcmk_graph_producer.c then->uuid); then 564 lib/pacemaker/pcmk_graph_producer.c pe__clear_graph_flags(changed, then, pe_graph_disable); then 582 lib/pacemaker/pcmk_graph_producer.c if (pcmk_is_set(then->flags, pe_action_requires_any)) { then 583 lib/pacemaker/pcmk_graph_producer.c if (last_flags != then->flags) { then 584 lib/pacemaker/pcmk_graph_producer.c pe__set_graph_flags(changed, then, pe_graph_updated_then); then 586 lib/pacemaker/pcmk_graph_producer.c pe__clear_graph_flags(changed, then, pe_graph_updated_then); then 592 lib/pacemaker/pcmk_graph_producer.c then->uuid); then 594 lib/pacemaker/pcmk_graph_producer.c && !pcmk_is_set(then->flags, pe_action_runnable)) { then 595 lib/pacemaker/pcmk_graph_producer.c pcmk__block_colocated_starts(then, data_set); then 597 lib/pacemaker/pcmk_graph_producer.c update_action(then, data_set); then 598 lib/pacemaker/pcmk_graph_producer.c for (lpc = then->actions_after; lpc != NULL; lpc = lpc->next) { then 1707 lib/pacemaker/pcmk_sched_allocate.c pe_action_t *then = (pe_action_t *) gIter->data; then 1710 lib/pacemaker/pcmk_sched_allocate.c if (pcmk_is_set(then->flags, pe_action_pseudo)) { then 1714 lib/pacemaker/pcmk_sched_allocate.c order_actions(probe, then, probe_order_type); then 636 lib/pacemaker/pcmk_sched_bundle.c multi_update_interleave_actions(pe_action_t *first, pe_action_t *then, then 653 lib/pacemaker/pcmk_sched_bundle.c children = get_containers_or_children(then->rsc); then 664 lib/pacemaker/pcmk_sched_bundle.c crm_debug("No match found for %s (%d / %s / %s)", then_child->id, current, first->uuid, then->uuid); then 673 lib/pacemaker/pcmk_sched_bundle.c pe_rsc_info(then->rsc, "Inhibiting %s from being active", then_child->id); then 703 lib/pacemaker/pcmk_sched_bundle.c then_replica = replica_for_container(then->rsc, then_child, node); then 704 lib/pacemaker/pcmk_sched_bundle.c if (strstr(then->task, "mote") then 714 lib/pacemaker/pcmk_sched_bundle.c NULL, then->task, node); then 716 lib/pacemaker/pcmk_sched_bundle.c then_action = find_first_action(then_child->actions, NULL, then->task, node); then 736 lib/pacemaker/pcmk_sched_bundle.c && !pcmk__str_any_of(then->task, RSC_STOP, RSC_DEMOTE, NULL)) { then 738 lib/pacemaker/pcmk_sched_bundle.c then->task, then_child->id); then 742 lib/pacemaker/pcmk_sched_bundle.c then->task, then_child->id, then 771 lib/pacemaker/pcmk_sched_bundle.c if(children != then->rsc->children) { then 778 lib/pacemaker/pcmk_sched_bundle.c can_interleave_actions(pe_action_t *first, pe_action_t *then) then 784 lib/pacemaker/pcmk_sched_bundle.c if(first->rsc == NULL || then->rsc == NULL) { then 785 lib/pacemaker/pcmk_sched_bundle.c crm_trace("Not interleaving %s with %s (both must be resources)", first->uuid, then->uuid); then 787 lib/pacemaker/pcmk_sched_bundle.c } else if(first->rsc == then->rsc) { then 788 lib/pacemaker/pcmk_sched_bundle.c crm_trace("Not interleaving %s with %s (must belong to different resources)", first->uuid, then->uuid); then 790 lib/pacemaker/pcmk_sched_bundle.c } else if(first->rsc->variant < pe_clone || then->rsc->variant < pe_clone) { then 791 lib/pacemaker/pcmk_sched_bundle.c crm_trace("Not interleaving %s with %s (both sides must be clones or bundles)", first->uuid, then->uuid); then 795 lib/pacemaker/pcmk_sched_bundle.c if (pcmk__ends_with(then->uuid, "_stop_0") then 796 lib/pacemaker/pcmk_sched_bundle.c || pcmk__ends_with(then->uuid, "_demote_0")) { then 799 lib/pacemaker/pcmk_sched_bundle.c rsc = then->rsc; then 805 lib/pacemaker/pcmk_sched_bundle.c first->uuid, then->uuid, interleave ? "yes" : "no", rsc->id); then 811 lib/pacemaker/pcmk_sched_bundle.c pcmk__multi_update_actions(pe_action_t *first, pe_action_t *then, then 818 lib/pacemaker/pcmk_sched_bundle.c crm_trace("%s -> %s", first->uuid, then->uuid); then 820 lib/pacemaker/pcmk_sched_bundle.c if(can_interleave_actions(first, then)) { then 821 lib/pacemaker/pcmk_sched_bundle.c changed = multi_update_interleave_actions(first, then, node, flags, then 824 lib/pacemaker/pcmk_sched_bundle.c } else if(then->rsc) { then 829 lib/pacemaker/pcmk_sched_bundle.c changed |= native_update_actions(first, then, node, flags, filter, then 833 lib/pacemaker/pcmk_sched_bundle.c children = get_containers_or_children(then->rsc); then 837 lib/pacemaker/pcmk_sched_bundle.c pe_action_t *then_child_action = find_first_action(then_child->actions, NULL, then->task, node); then 856 lib/pacemaker/pcmk_sched_bundle.c if(children != then->rsc->children) { then 495 lib/pacemaker/pcmk_sched_group.c group_update_actions(pe_action_t *first, pe_action_t *then, pe_node_t *node, then 499 lib/pacemaker/pcmk_sched_group.c GList *gIter = then->rsc->children; then 502 lib/pacemaker/pcmk_sched_group.c CRM_ASSERT(then->rsc != NULL); then 503 lib/pacemaker/pcmk_sched_group.c changed |= native_update_actions(first, then, node, flags, filter, type, then 508 lib/pacemaker/pcmk_sched_group.c pe_action_t *child_action = find_first_action(child->actions, NULL, then->task, node); then 1792 lib/pacemaker/pcmk_sched_native.c handle_restart_ordering(pe_action_t *first, pe_action_t *then, then 1798 lib/pacemaker/pcmk_sched_native.c CRM_ASSERT(is_primitive_action(then)); then 1804 lib/pacemaker/pcmk_sched_native.c && !pcmk_is_set(then->flags, pe_action_optional)) { then 1812 lib/pacemaker/pcmk_sched_native.c && !pcmk_is_set(then->flags, pe_action_runnable) then 1813 lib/pacemaker/pcmk_sched_native.c && pcmk_is_set(then->rsc->flags, pe_rsc_managed) then 1814 lib/pacemaker/pcmk_sched_native.c && (first->rsc == then->rsc)) { then 1823 lib/pacemaker/pcmk_sched_native.c first->uuid, then->uuid, reason); then 1827 lib/pacemaker/pcmk_sched_native.c clear_action_flag_because(first, pe_action_optional, then); then 1831 lib/pacemaker/pcmk_sched_native.c if (!pcmk_is_set(then->flags, pe_action_optional)) { then 1832 lib/pacemaker/pcmk_sched_native.c clear_action_flag_because(first, pe_action_optional, then); then 1836 lib/pacemaker/pcmk_sched_native.c if (!pcmk_is_set(then->flags, pe_action_migrate_runnable)) { then 1837 lib/pacemaker/pcmk_sched_native.c clear_action_flag_because(first, pe_action_migrate_runnable, then); then 1843 lib/pacemaker/pcmk_sched_native.c clear_action_flag_because(then, pe_action_runnable, first); then 1848 lib/pacemaker/pcmk_sched_native.c native_update_actions(pe_action_t *first, pe_action_t *then, pe_node_t *node, then 1854 lib/pacemaker/pcmk_sched_native.c enum pe_action_flags then_flags = then->flags; then 1858 lib/pacemaker/pcmk_sched_native.c pe_resource_t *then_rsc = then->rsc; then 1863 lib/pacemaker/pcmk_sched_native.c } else if ((then_rsc_role == RSC_ROLE_STOPPED) && pcmk__str_eq(then->task, RSC_STOP, pcmk__str_casei)) { then 1867 lib/pacemaker/pcmk_sched_native.c && pcmk__str_eq(then->task, RSC_START, pcmk__str_casei) then 1868 lib/pacemaker/pcmk_sched_native.c && pcmk_is_set(then->flags, pe_action_optional) then 1869 lib/pacemaker/pcmk_sched_native.c && then->node then 1871 lib/pacemaker/pcmk_sched_native.c && then->node->details == ((pe_node_t *) then_rsc->running_on->data)->details) { then 1880 lib/pacemaker/pcmk_sched_native.c clear_action_flag_because(then, pe_action_optional, first); then 1881 lib/pacemaker/pcmk_sched_native.c clear_action_flag_because(then, pe_action_runnable, first); then 1894 lib/pacemaker/pcmk_sched_native.c clear_action_flag_because(first, pe_action_optional, then); then 1898 lib/pacemaker/pcmk_sched_native.c !pcmk_is_set(then->flags, pe_action_migrate_runnable)) { then 1899 lib/pacemaker/pcmk_sched_native.c clear_action_flag_because(first, pe_action_migrate_runnable, then); then 1905 lib/pacemaker/pcmk_sched_native.c ((then->flags & pe_action_optional) == FALSE) && then 1906 lib/pacemaker/pcmk_sched_native.c (then->rsc != NULL) && (then->rsc->role == RSC_ROLE_PROMOTED)) { then 1908 lib/pacemaker/pcmk_sched_native.c clear_action_flag_because(first, pe_action_optional, then); then 1911 lib/pacemaker/pcmk_sched_native.c !pcmk_is_set(then->flags, pe_action_migrate_runnable)) { then 1913 lib/pacemaker/pcmk_sched_native.c then); then 1921 lib/pacemaker/pcmk_sched_native.c if (((then->flags & pe_action_migrate_runnable) == FALSE) || then 1922 lib/pacemaker/pcmk_sched_native.c ((then->flags & pe_action_runnable) == FALSE)) { then 1923 lib/pacemaker/pcmk_sched_native.c clear_action_flag_because(first, pe_action_runnable, then); then 1926 lib/pacemaker/pcmk_sched_native.c if ((then->flags & pe_action_optional) == 0) { then 1927 lib/pacemaker/pcmk_sched_native.c clear_action_flag_because(first, pe_action_optional, then); then 1935 lib/pacemaker/pcmk_sched_native.c clear_action_flag_because(then, pe_action_migrate_runnable, first); then 1936 lib/pacemaker/pcmk_sched_native.c pe__clear_action_flags(then, pe_action_pseudo); then 1942 lib/pacemaker/pcmk_sched_native.c && pcmk_is_set(then->flags, pe_action_runnable) then 1945 lib/pacemaker/pcmk_sched_native.c clear_action_flag_because(then, pe_action_runnable, first); then 1946 lib/pacemaker/pcmk_sched_native.c clear_action_flag_because(then, pe_action_migrate_runnable, first); then 1951 lib/pacemaker/pcmk_sched_native.c && pcmk_is_set(then->flags, pe_action_optional) then 1955 lib/pacemaker/pcmk_sched_native.c clear_action_flag_because(then, pe_action_optional, first); then 1959 lib/pacemaker/pcmk_sched_native.c handle_restart_ordering(first, then, filter); then 1962 lib/pacemaker/pcmk_sched_native.c if (then_flags != then->flags) { then 1964 lib/pacemaker/pcmk_sched_native.c pe_rsc_trace(then->rsc, then 1967 lib/pacemaker/pcmk_sched_native.c then->uuid, then 1968 lib/pacemaker/pcmk_sched_native.c then->node? then->node->details->uname : "no node", then 1969 lib/pacemaker/pcmk_sched_native.c then->flags, then_flags, first->uuid, first->flags); then 1971 lib/pacemaker/pcmk_sched_native.c if(then->rsc && then->rsc->parent) { then 1973 lib/pacemaker/pcmk_sched_native.c update_action(then, data_set); then 1984 lib/pacemaker/pcmk_sched_native.c first->flags, first_flags, then->uuid, then->flags);