# HG changeset patch # User Simone Gotti # Date 1300401753 -3600 # Node ID 30d64eaba0506e3ed85f442fd90ea3adc83c9501 # Parent c925540f579c8b4ed0fcce1a1497346dc1f6ff86 Try to fix startup-fencing not happening when nodes without pacemakerd enabled have their node_state registered in the CIB. This will happen with CMAN as quorum provider as all the nodes known to cman are registered at startup and also with corosync+pcmkv1 if corosync is started on N nodes but pacemakerd is started only on N-M nodes. diff -r c925540f579c -r 30d64eaba050 lib/pengine/unpack.c --- a/lib/pengine/unpack.c Mon Mar 14 18:21:02 2011 +0100 +++ b/lib/pengine/unpack.c Thu Mar 17 23:42:33 2011 +0100 @@ -693,6 +693,15 @@ gboolean online = FALSE; const char *shutdown = NULL; const char *exp_state = crm_element_value(node_state, XML_CIB_ATTR_EXPSTATE); + + gboolean unseen_are_unclean = TRUE; + const char *blind_faith = pe_pref( + data_set->config_hash, "startup-fencing"); + + if(crm_is_true(blind_faith) == FALSE) { + unseen_are_unclean = FALSE; + crm_warn("Blind faith: not fencing unseen nodes"); + } if(this_node == NULL) { crm_config_err("No node to check"); @@ -709,6 +718,13 @@ } else if(safe_str_eq(exp_state, CRMD_JOINSTATE_MEMBER)) { this_node->details->expected_up = TRUE; } + + /* A node can be in the status section of the cib because reported by the quorum provider. + * In this case the expected attribute isn't setted. + * Consider the node as expected up if startup-fencing is true */ + if(exp_state == NULL && unseen_are_unclean == TRUE) { + this_node->details->expected_up = TRUE; + } if(is_set(data_set->flags, pe_flag_stonith_enabled) == FALSE) { online = determine_online_status_no_fencing(