/**************************************************************************** * Name : gld_rsc_set_orphan * * Description : Instruction from the GLND to set the orphan flag * * Arguments : evt - Event structure * * Return Values : NCSCC_RC_SUCCESS/ NCSCC_RC_FAILURE * * Notes : None. *****************************************************************************/ static uint32_t gld_rsc_set_orphan(GLSV_GLD_EVT *evt) { GLSV_GLD_CB *gld_cb = evt->gld_cb; GLSV_GLD_GLND_DETAILS *node_details; uint32_t node_id; uint32_t rc = NCSCC_RC_FAILURE; TRACE_ENTER(); node_id = m_NCS_NODE_ID_FROM_MDS_DEST(evt->fr_dest_id); if ((evt == GLSV_GLD_EVT_NULL) || (gld_cb == NULL)) goto end; /* Find if the node details are available */ if ((node_details = (GLSV_GLD_GLND_DETAILS *)ncs_patricia_tree_get(&gld_cb->glnd_details, (uint8_t *)&node_id)) == NULL) { LOG_ER("Event from unknown glnd: node_id %u", node_id); goto end; } TRACE("EVT Processing set orphan: node_id %u ", node_details->node_id); if (gld_rsc_ref_set_orphan (node_details, evt->info.rsc_details.rsc_id, evt->info.rsc_details.orphan, evt->info.rsc_details.lck_mode) == NCSCC_RC_SUCCESS) { /* Checkpoint rsc_details */ glsv_gld_a2s_ckpt_rsc_details(gld_cb, evt->evt_type, evt->info.rsc_details, node_details->dest_id, evt->info.rsc_details.lcl_ref_cnt); rc = NCSCC_RC_SUCCESS; } end: TRACE_LEAVE(); return rc; }
/**************************************************************************** * Name : gld_rsc_set_orphan * * Description : Instruction from the GLND to set the orphan flag * * Arguments : evt - Event structure * * Return Values : NCSCC_RC_SUCCESS/ NCSCC_RC_FAILURE * * Notes : None. *****************************************************************************/ static uns32 gld_rsc_set_orphan(GLSV_GLD_EVT *evt) { GLSV_GLD_CB *gld_cb = evt->gld_cb; GLSV_GLD_GLND_DETAILS *node_details; uns32 node_id; node_id = m_NCS_NODE_ID_FROM_MDS_DEST(evt->fr_dest_id); if ((evt == GLSV_GLD_EVT_NULL) || (gld_cb == NULL)) return NCSCC_RC_FAILURE; /* Find if the node details are available */ if ((node_details = (GLSV_GLD_GLND_DETAILS *)ncs_patricia_tree_get(&gld_cb->glnd_details, (uns8 *)&node_id)) == NULL) { m_LOG_GLD_HEADLINE(GLD_UNKNOWN_GLND_EVT, NCSFL_SEV_NOTICE, __FILE__, __LINE__, node_id); return NCSCC_RC_FAILURE; } m_LOG_GLD_EVT(GLD_EVT_SET_ORPHAN, NCSFL_SEV_INFO, __FILE__, __LINE__, 0, node_details->node_id); if (gld_rsc_ref_set_orphan (node_details, evt->info.rsc_details.rsc_id, evt->info.rsc_details.orphan, evt->info.rsc_details.lck_mode) == NCSCC_RC_SUCCESS) { /* Checkpoint rsc_details */ glsv_gld_a2s_ckpt_rsc_details(gld_cb, evt->evt_type, evt->info.rsc_details, node_details->dest_id, evt->info.rsc_details.lcl_ref_cnt); return NCSCC_RC_SUCCESS; } else return NCSCC_RC_FAILURE; }
/**************************************************************************** * Name : glsv_gld_standby_rsc_set_orphan * * Description : Instruction from the GLND to set the orphan flag * * Arguments : async_evt - Event structure * * Return Values : NCSCC_RC_SUCCESS/ NCSCC_RC_FAILURE * * Notes : None. *****************************************************************************/ static uint32_t glsv_gld_standby_rsc_set_orphan(GLSV_GLD_A2S_CKPT_EVT *async_evt) { GLSV_GLD_CB *gld_cb; GLSV_GLD_GLND_DETAILS *node_details; uint32_t node_id; uint32_t rc = NCSCC_RC_FAILURE; TRACE_ENTER(); if (async_evt == NULL) goto end; node_id = m_NCS_NODE_ID_FROM_MDS_DEST(async_evt->info.rsc_details.mdest_id); if ((gld_cb = (NCSCONTEXT)ncshm_take_hdl(NCS_SERVICE_ID_GLD, gl_gld_hdl)) == NULL) { LOG_ER("Handle take failed"); goto end; } /* Find if the node details are available */ if ((node_details = (GLSV_GLD_GLND_DETAILS *)ncs_patricia_tree_get(&gld_cb->glnd_details, (uint8_t *)&node_id)) == NULL) { LOG_ER("Patricia tree get failed: node_id %u", node_id); goto error; } if (gld_rsc_ref_set_orphan(node_details, async_evt->info.rsc_details.rsc_id, async_evt->info.rsc_details.orphan, async_evt->info.rsc_details.lck_mode) == NCSCC_RC_SUCCESS) { TRACE_1("GLD a2s evt set orphan success: rsc_id %u node_id %u", async_evt->info.rsc_details.rsc_id, node_id); ncshm_give_hdl(gld_cb->my_hdl); rc = NCSCC_RC_SUCCESS; goto end; } else goto error; error: LOG_ER("GLD a2s evt set orphan failed: rsc_id %u node_id %u", async_evt->info.rsc_details.rsc_id, node_id); ncshm_give_hdl(gld_cb->my_hdl); end: TRACE_LEAVE(); return rc; }