# HG changeset patch # User Simone Gotti # Date 1300498033 -3600 # Node ID 1152982cac5558fea2faf5e344e76ac18d0b80c5 # Parent 30d64eaba0506e3ed85f442fd90ea3adc83c9501 At startup add only the active nodes. This will make the cman integration behave as the other and let startup-fencing work. diff -r 30d64eaba050 -r 1152982cac55 lib/common/ais.c --- a/lib/common/ais.c Thu Mar 17 23:42:33 2011 +0100 +++ b/lib/common/ais.c Sat Mar 19 02:27:13 2011 +0100 @@ -636,7 +636,7 @@ #define MAX_NODES 256 -static void cman_event_callback(cman_handle_t handle, void *privdata, int reason, int arg) +static void cman_event_handle(cman_handle_t handle, void *privdata, int reason, int arg, int startup) { int rc = 0, lpc = 0, node_count = 0; @@ -674,10 +674,13 @@ /* Never allow node ID 0 to be considered a member #315711 */ cman_nodes[lpc].cn_member = 0; } - crm_update_peer(cman_nodes[lpc].cn_nodeid, cman_nodes[lpc].cn_incarnation, + /* At startup add only the active nodes or startup fencing won't work */ + if ((startup && cman_nodes[lpc].cn_member) || !startup ) { + crm_update_peer(cman_nodes[lpc].cn_nodeid, cman_nodes[lpc].cn_incarnation, cman_nodes[lpc].cn_member?crm_peer_seq:0, 0, 0, cman_nodes[lpc].cn_name, cman_nodes[lpc].cn_name, NULL, cman_nodes[lpc].cn_member?CRM_NODE_MEMBER:CRM_NODE_LOST); + } } if(dispatch) { @@ -696,6 +699,12 @@ break; } } + +static void cman_event_callback(cman_handle_t handle, void *privdata, int reason, int arg) +{ + cman_event_handle(handle, privdata, reason, arg, FALSE); +} + #endif gboolean init_cman_connection( @@ -729,8 +738,8 @@ } /* Get the current membership state */ - cman_event_callback(pcmk_cman_handle, dispatch, CMAN_REASON_STATECHANGE, - cman_is_quorate(pcmk_cman_handle)); + cman_event_handle(pcmk_cman_handle, dispatch, CMAN_REASON_STATECHANGE, + cman_is_quorate(pcmk_cman_handle), TRUE); fd = cman_get_fd(pcmk_cman_handle); crm_debug("Adding fd=%d to mainloop", fd);