---
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel