--- src/ckpt/ckptnd/cpnd_evt.c | 138 +++++++++++++++++++++++++-------------------- src/ckpt/ckptnd/cpnd_mds.c | 8 ++- 2 files changed, 85 insertions(+), 61 deletions(-)
diff --git a/src/ckpt/ckptnd/cpnd_evt.c b/src/ckpt/ckptnd/cpnd_evt.c index 25083a5..f28f19f 100644 --- a/src/ckpt/ckptnd/cpnd_evt.c +++ b/src/ckpt/ckptnd/cpnd_evt.c @@ -4869,76 +4869,94 @@ static uint32_t cpnd_proc_cpd_new_active(CPND_CB *cb) while (node) { out_evt = NULL; + if (node->evt.info.cpd.type == CPD_EVT_ND2D_CKPT_USR_INFO) + { + rc = cpnd_mds_msg_send(cb, NCSMDS_SVC_ID_CPD, cb->cpd_mdest_id, + &node->evt); + if (rc != NCSCC_RC_SUCCESS) { + TRACE_4("cpnd send to cpd failed %d", rc); + ncs_enqueue(&cb->cpnd_cpd_deferred_reqs_list, + (void *)node); + TRACE_LEAVE(); + return rc; + } + else + { + TRACE_4("CPND SEND PASS %d\n",rc); + TRACE_LEAVE(); + } + } + else + { + rc = cpnd_mds_msg_sync_send(cb, NCSMDS_SVC_ID_CPD, + cb->cpd_mdest_id, &node->evt, + &out_evt, CPSV_WAIT_TIME); - rc = cpnd_mds_msg_sync_send(cb, NCSMDS_SVC_ID_CPD, - cb->cpd_mdest_id, &node->evt, - &out_evt, CPSV_WAIT_TIME); + if (rc != NCSCC_RC_SUCCESS) { + /* put back the event into the deferred requests queue + */ + TRACE_4("cpnd sync send to cpd failed %d", rc); + ncs_enqueue(&cb->cpnd_cpd_deferred_reqs_list, + (void *)node); + TRACE_LEAVE(); + return rc; + } - if (rc != NCSCC_RC_SUCCESS) { - /* put back the event into the deferred requests queue - */ - TRACE_4("cpnd sync send to cpd failed %d", rc); - ncs_enqueue(&cb->cpnd_cpd_deferred_reqs_list, - (void *)node); - TRACE_LEAVE(); - return rc; - } + switch (node->evt.info.cpd.type) { - switch (node->evt.info.cpd.type) { + case CPD_EVT_ND2D_CKPT_DESTROY: + if (out_evt && + out_evt->info.cpnd.info.destroy_ack.error != + SA_AIS_OK) { + TRACE_4( + "cpnd cpd new active destroy failed with error:%d", + out_evt->info.cpnd.info.destroy_ack.error); + } + break; + case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME: + if (out_evt && + out_evt->info.cpnd.info.destroy_ack.error != + SA_AIS_OK) { + TRACE_4( + "cpnd cpd new active destroy byname failed with error:%d", + out_evt->info.cpnd.info.destroy_ack.error); + } + break; - case CPD_EVT_ND2D_CKPT_DESTROY: - if (out_evt && - out_evt->info.cpnd.info.destroy_ack.error != - SA_AIS_OK) { - TRACE_4( - "cpnd cpd new active destroy failed with error:%d", - out_evt->info.cpnd.info.destroy_ack.error); - } - break; - case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME: - if (out_evt && - out_evt->info.cpnd.info.destroy_ack.error != - SA_AIS_OK) { - TRACE_4( - "cpnd cpd new active destroy byname failed with error:%d", - out_evt->info.cpnd.info.destroy_ack.error); - } - break; + case CPD_EVT_ND2D_CKPT_UNLINK: + if (out_evt && + out_evt->info.cpnd.info.ulink_ack.error != + SA_AIS_OK) { + TRACE_4( + "cpnd cpd new active unlink failed with error:%d", + out_evt->info.cpnd.info.ulink_ack.error); + } - case CPD_EVT_ND2D_CKPT_UNLINK: - if (out_evt && - out_evt->info.cpnd.info.ulink_ack.error != - SA_AIS_OK) { - TRACE_4( - "cpnd cpd new active unlink failed with error:%d", - out_evt->info.cpnd.info.ulink_ack.error); - } + break; - break; + case CPD_EVT_ND2D_CKPT_RDSET: + if (out_evt && + out_evt->info.cpnd.info.rdset_ack.error != + SA_AIS_OK) { + TRACE_4( + "cpnd cpd new active rdset failed with error:%d", + out_evt->info.cpnd.info.rdset_ack.error); + } + break; - case CPD_EVT_ND2D_CKPT_RDSET: - if (out_evt && - out_evt->info.cpnd.info.rdset_ack.error != - SA_AIS_OK) { - TRACE_4( - "cpnd cpd new active rdset failed with error:%d", - out_evt->info.cpnd.info.rdset_ack.error); - } - break; + case CPD_EVT_ND2D_ACTIVE_SET: + if (out_evt && out_evt->info.cpnd.info.arep_ack.error != + SA_AIS_OK) { + TRACE_4( + "cpnd cpd new active arep set failed with error:%d", + out_evt->info.cpnd.info.arep_ack.error); + } + break; - case CPD_EVT_ND2D_ACTIVE_SET: - if (out_evt && out_evt->info.cpnd.info.arep_ack.error != - SA_AIS_OK) { - TRACE_4( - "cpnd cpd new active arep set failed with error:%d", - out_evt->info.cpnd.info.arep_ack.error); + default: + break; } - break; - - default: - break; } - m_MMGR_FREE_CPND_CPD_DEFERRED_REQ_NODE(node); node = (CPND_CPD_DEFERRED_REQ_NODE *)ncs_dequeue( &cb->cpnd_cpd_deferred_reqs_list); diff --git a/src/ckpt/ckptnd/cpnd_mds.c b/src/ckpt/ckptnd/cpnd_mds.c index b3dc2e2..0a2354f 100644 --- a/src/ckpt/ckptnd/cpnd_mds.c +++ b/src/ckpt/ckptnd/cpnd_mds.c @@ -1299,7 +1299,7 @@ uint32_t cpnd_mds_msg_send(CPND_CB *cb, uint32_t to_svc, MDS_DEST to_dest, { NCSMDS_INFO mds_info; uint32_t rc; - + CPND_CPD_DEFERRED_REQ_NODE *node = NULL; TRACE_ENTER(); if (!evt) { TRACE_LEAVE(); @@ -1312,6 +1312,12 @@ uint32_t cpnd_mds_msg_send(CPND_CB *cb, uint32_t to_svc, MDS_DEST to_dest, /* CPD is not UP */ TRACE_4("cpnd cpd service is down"); m_NCS_UNLOCK(&cb->cpnd_cpd_up_lock, NCS_LOCK_WRITE); + node = (CPND_CPD_DEFERRED_REQ_NODE *) + m_MMGR_ALLOC_CPND_CPD_DEFERRED_REQ_NODE; + memset(node, '\0', sizeof(CPND_CPD_DEFERRED_REQ_NODE)); + node->evt = *evt; + ncs_enqueue(&cb->cpnd_cpd_deferred_reqs_list, + (void *)node); TRACE_LEAVE(); return NCSCC_RC_FAILURE; } -- 2.7.4 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel