xmlNodePtr rsc_entry, resource_t *rsc_lh, node_t *node)
crm_data_t * rsc_entry, resource_t *rsc_lh, node_t *node)
unpack_failed_resource(GListPtr *placement_constraints, 		       xmlNodePtr rsc_entry, resource_t *rsc_lh, node_t *node){	const char *last_op  = xmlGetProp(rsc_entry, XML_LRM_ATTR_LASTOP);	crm_debug("Unpacking failed action %s on %s", last_op, rsc_lh->id);		/* make sure we dont allocate the resource here again*/	rsc2node_new("dont_run__generated",		     rsc_lh, -1.0, FALSE, node, placement_constraints);		if(safe_str_eq(last_op, "start")) {		/* the resource is not actually running... nothing more to do*/		return TRUE;	} 	switch(rsc_lh->stopfail_type) {		case pesf_stonith:			/* treat it as if it is still running			 * but also mark the node as unclean			 */			native_add_running(rsc_lh, node);			node->details->running_rsc = g_list_append(				node->details->running_rsc, rsc_lh);						if(node->details->online) {				node->details->shutdown = TRUE;			}			node->details->unclean  = TRUE;			break;					case pesf_block: 			/* let this depend on the stop action which will fail			 * but make sure the transition continues...			 */			native_add_running(rsc_lh, node);			node->details->running_rsc = g_list_append(				node->details->running_rsc, rsc_lh);/* 			rsc_lh->stop->timeout = NULL; /\* wait forever *\/ */			break;			case pesf_ignore:			/* pretend nothing happened */			break;	}			return TRUE;}