crm_debug_3("Adding shutdown (%d) as an input to stonith (%d)",
crm_debug_4("Adding shutdown (%d) as an input to stonith (%d)",
stonith_constraints(node_t *node,		    action_t *stonith_op, action_t *shutdown_op,		    GListPtr *ordering_constraints){	GListPtr stop_actions = NULL;	if(shutdown_op != NULL) {		/* stop everything we can via shutdown_constraints() and then		 *   shoot the node... the shutdown has been superceeded		 */		shutdown_op->pseudo = TRUE;		shutdown_op->runnable = TRUE;		/* shutdown before stonith */		/* Give any resources a chance to shutdown normally */		crm_debug_3("Adding shutdown (%d) as an input to stonith (%d)",			  shutdown_op->id, stonith_op->id);				custom_action_order(			NULL, crm_strdup(CRM_OP_SHUTDOWN), shutdown_op,			NULL, crm_strdup(CRM_OP_FENCE), stonith_op,			pecs_must, ordering_constraints);			}		/* add the stonith OP to the before lists so it counts as a pre-req */	slist_iter(		rsc, resource_t, node->details->running_rsc, lpc,		if(stonith_op != NULL) {			char *key = stop_key(rsc);			stop_actions = find_actions(rsc->actions, key, node);			crm_free(key);						slist_iter(				action, action_t, stop_actions, lpc2,				if(node->details->online == FALSE				   || rsc->unclean) {					/* the stop would never complete and is					 * now implied by the stonith operation					 */					action->pseudo = TRUE;					action->runnable = TRUE;					custom_action_order(						NULL, crm_strdup(CRM_OP_FENCE),stonith_op,						rsc, stop_key(rsc), NULL,						pecs_must, ordering_constraints);				} else {					/* stop healthy resources before the					 * stonith op					 */					custom_action_order(						rsc, stop_key(rsc), NULL,						NULL,crm_strdup(CRM_OP_FENCE),stonith_op,						pecs_must, ordering_constraints);				}				);			crm_debug_3("Adding stonith (%d) as an input to stop",				  stonith_op->id);					} else if((rsc->unclean || node->details->unclean)			  && rsc->stopfail_type == pesf_block) {			/* depend on the stop action which will fail */			pe_err("SHARED RESOURCE %s WILL REMAIN BLOCKED"				 " ON NODE %s UNTIL %s",				rsc->id, node->details->uname,				stonith_enabled?"QUORUM RETURNS":"CLEANED UP MANUALLY");			continue;					} else if((rsc->unclean || node->details->unclean)			  && rsc->stopfail_type == pesf_ignore) {			/* nothing to do here */			pe_err("SHARED RESOURCE %s IS NOT PROTECTED",				 rsc->id);			continue;		}		);		return TRUE;}