37     } 
else if (pcmk__is_primitive(rsc) && pcmk__is_anonymous_clone(
parent)
    38                && (g_hash_table_lookup(
parent->priv->probed_nodes,
    39                                        node->
priv->
id) != NULL)) {
    64     for (GList *iter = rsc->
priv->
actions; iter != NULL; iter = iter->next) {
    81                     && !rsc_is_known_on(rsc, 
target)) {
   114     GList *action_list = NULL;
   115     bool order_implicit = 
false;
   134         || pcmk__is_guest_or_bundle_node(
target)) {
   136         order_implicit = 
true;
   139     if (action_list && order_implicit) {
   144     for (iter = action_list; iter != NULL; iter = iter->next) {
   151         if (order_implicit) {
   164             if (!pcmk__is_bundled(rsc)) {
   171             crm_notice(
"Stop of failed resource %s is implicit %s %s is fenced",
   172                        rsc->
id, (order_implicit? 
"after" : 
"because"),
   175             crm_info(
"%s is implicit %s %s is fenced",
   176                      action->uuid, (order_implicit? 
"after" : 
"because"),
   203          crm_info(
"Moving healthy resource %s off %s before fencing",
   204                   rsc->
id, pcmk__node_name(node));
   211     g_list_free(action_list);
   216     for (iter = action_list; iter != NULL; iter = iter->next) {
   219         if (!(
action->node->details->online) || 
action->node->details->unclean
   224                                "Demote of failed resource %s is implicit "   225                                "after %s is fenced",
   238             if (pcmk__is_bundled(rsc)) {
   241             } 
else if (order_implicit) {
   248     g_list_free(action_list);
   264              iter != NULL; iter = iter->next) {
   268             rsc_stonith_ordering(child_rsc, stonith_op);
   273                         "Skipping fencing constraints for unmanaged resource: "   277         order_start_vs_fencing(rsc, stonith_op);
   278         order_stop_vs_fencing(rsc, stonith_op);
   376     if (launcher != NULL) {
   389     stonith_op = 
pe_fence_op(node, fence_action, FALSE, 
"guest is unclean",
   403         crm_info(
"Implying guest %s is down (action %d) after %s fencing",
   404                  pcmk__node_name(node), stonith_op->
id,
   405                  pcmk__node_name(stop->
node));
   414         crm_info(
"Implying guest %s is down (action %d) "   415                  "after launcher %s is stopped (action %d)",
   416                  pcmk__node_name(node), stonith_op->
id,
   417                  launcher->
id, stop->
id);
   431             crm_info(
"Implying guest %s is down (action %d) "   432                      "after connection is stopped (action %d)",
   433                      pcmk__node_name(node), stonith_op->
id, stop->
id);
   438             crm_info(
"Implying guest %s is down (action %d) ",
   439                      pcmk__node_name(node), stonith_op->
id);
   481     crm_debug(
"Ordering any stops of %s before %s, and any starts after",
   500                        NULL, strdup(unfence->
uuid), unfence,
 #define CRM_CHECK(expr, failure_action)
 
Relation applies only if actions are on same node. 
 
void trigger_unfencing(pcmk_resource_t *rsc, pcmk_node_t *node, const char *reason, pcmk_action_t *dependency, pcmk_scheduler_t *scheduler)
 
#define crm_notice(fmt, args...)
 
'then' is runnable (and migratable) only if 'first' is runnable 
 
void pcmk__fence_guest(pcmk_node_t *node)
 
void pcmk__order_restart_vs_unfence(gpointer data, gpointer user_data)
 
G_GNUC_INTERNAL void pcmk__new_ordering(pcmk_resource_t *first_rsc, char *first_task, pcmk_action_t *first_action, pcmk_resource_t *then_rsc, char *then_task, pcmk_action_t *then_action, uint32_t flags, pcmk_scheduler_t *sched)
 
pcmk_resource_t * uber_parent(pcmk_resource_t *rsc)
 
#define pcmk__rsc_trace(rsc, fmt, args...)
 
#define pcmk__rsc_info(rsc, fmt, args...)
 
pcmk_action_t * pe_fence_op(pcmk_node_t *node, const char *op, bool optional, const char *reason, bool priority_delay, pcmk_scheduler_t *scheduler)
 
pcmk__scheduler_private_t * priv
 
If 'first' is required, 'then' action for instance on same node is. 
 
GList * pe__resource_actions(const pcmk_resource_t *rsc, const pcmk_node_t *node, const char *task, bool require_node)
Find all actions of given type for a resource. 
 
Ordering applies even if 'first' runs on guest node created by 'then'. 
 
#define pcmk__rsc_debug(rsc, fmt, args...)
 
pcmk__action_relation_flags
 
pcmk__node_private_t * priv
 
#define CRM_ATTR_UNFENCED
 
#define PCMK_ACTION_DEMOTE
 
#define PCMK_ACTION_REBOOT
 
#define crm_debug(fmt, args...)
 
pcmk_scheduler_t * scheduler
 
Actions are ordered (optionally, if no other flags are set) 
 
void pcmk__order_vs_unfence(const pcmk_resource_t *rsc, pcmk_node_t *node, pcmk_action_t *action, enum pcmk__action_relation_flags order)
 
#define pcmk_is_set(g, f)
Convenience alias for pcmk_all_flags_set(), to check single flag. 
 
#define PCMK_ACTION_START
 
pcmk__resource_private_t * priv
 
#define PCMK_ACTION_STONITH
 
pcmk_scheduler_t * scheduler
 
gboolean order_actions(pcmk_action_t *first, pcmk_action_t *then, uint32_t flags)
 
GHashTable * allowed_nodes
 
#define pcmk__assert(expr)
 
void pcmk__order_vs_fence(pcmk_action_t *stonith_op, pcmk_scheduler_t *scheduler)
 
Cluster status and scheduling. 
 
void pe__order_notifs_after_fencing(const pcmk_action_t *action, pcmk_resource_t *rsc, pcmk_action_t *stonith_op)
 
pcmk_action_t * find_first_action(const GList *input, const char *uuid, const char *task, const pcmk_node_t *on_node)
 
pcmk_scheduler_t * scheduler
 
pcmk_resource_t * launcher
 
const char * pcmk__node_attr(const pcmk_node_t *node, const char *name, const char *target, enum pcmk__rsc_node node_type)
 
#define pcmk__set_action_flags(action, flags_to_set)
 
#define crm_info(fmt, args...)
 
GHashTable * probed_nodes
 
char * crm_strdup_printf(char const *format,...) G_GNUC_PRINTF(1
 
bool pcmk__node_unfenced(const pcmk_node_t *node)