Hi Hoang, On 12/1/2016 9:15 AM, Vo Minh Hoang wrote: > Dear Mahesh, > > I have one small concern about: > Please consider get CB data by ncshm_take_hdl() or pass in ensures_space as > parameter. > When CB is global access, adding it to parameters of many API is a little > bit inconvenient. The `cb->shm_alloc_guaranteed = atoi(ptr);` only update at the tim of cpnd_lib_init() by reading OSAF_CKPT_SHM_ALLOC_GUARANTEE env and no further run-time update, so ideally you dont required lock.
Even the for CPSV API`s cb lock was taken and so the call shm will automatically under lock do see any specific missing place in API code ? -AVM > And passing CB for just one ensures_space param might confuse the usage of > function, maybe in future use. > > This is just my opinion, please consider about it. > > Thank you and best regards, > Hoang > > > -----Original Message----- > From: mahesh.va...@oracle.com [mailto:mahesh.va...@oracle.com] > Sent: Tuesday, November 29, 2016 5:37 PM > To: hoang.m...@dektech.com.au; ramesh.bet...@oracle.com > Cc: opensaf-devel@lists.sourceforge.net > Subject: [PATCH 2 of 3] cpsv : update cpsv error handing based on leap > changes [#2202] > > osaf/libs/common/cpsv/include/cpnd_cb.h | 4 +- > osaf/libs/common/cpsv/include/cpnd_init.h | 8 +- > osaf/libs/common/cpsv/include/cpnd_sec.h | 2 +- > osaf/libs/core/include/ncs_osprm.h | 2 +- > osaf/services/saf/cpsv/cpnd/cpnd_db.c | 12 ++-- > osaf/services/saf/cpsv/cpnd/cpnd_evt.c | 82 > +++++++++++++++++++++--------- > osaf/services/saf/cpsv/cpnd/cpnd_proc.c | 31 ++++++---- > osaf/services/saf/cpsv/cpnd/cpnd_res.c | 24 +++------ > osaf/services/saf/cpsv/cpnd/cpnd_sec.cc | 12 ++-- > 9 files changed, 103 insertions(+), 74 deletions(-) > > > diff --git a/osaf/libs/common/cpsv/include/cpnd_cb.h > b/osaf/libs/common/cpsv/include/cpnd_cb.h > --- a/osaf/libs/common/cpsv/include/cpnd_cb.h > +++ b/osaf/libs/common/cpsv/include/cpnd_cb.h > @@ -341,8 +341,8 @@ uint32_t cpnd_amf_register(CPND_CB *cpnd uint32_t > cpnd_amf_deregister(CPND_CB *cpnd_cb); uint32_t > cpnd_client_extract_bits(uint32_t bitmap_value, uint32_t *bit_position); > uint32_t cpnd_res_ckpt_sec_del(CPND_CKPT_NODE *cp_node); -uint32_t > cpnd_ckpt_replica_create_res(NCS_OS_POSIX_SHM_REQ_INFO *open_req, char *buf, > CPND_CKPT_NODE **cp_node, > - uint32_t ref_cnt, CKPT_INFO > *cp_info, bool shm_alloc_guaranteed); > +uint32_t cpnd_ckpt_replica_create_res(CPND_CB *cb, > NCS_OS_POSIX_SHM_REQ_INFO *open_req, char *buf, CPND_CKPT_NODE **cp_node, > + uint32_t ref_cnt, CKPT_INFO > *cp_info); > int32_t cpnd_find_free_loc(CPND_CB *cb, CPND_TYPE_INFO type); uint32_t > cpnd_ckpt_write_header(CPND_CB *cb, uint32_t nckpts); uint32_t > cpnd_cli_info_write_header(CPND_CB *cb, int32_t n_clients); diff --git > a/osaf/libs/common/cpsv/include/cpnd_init.h > b/osaf/libs/common/cpsv/include/cpnd_init.h > --- a/osaf/libs/common/cpsv/include/cpnd_init.h > +++ b/osaf/libs/common/cpsv/include/cpnd_init.h > @@ -90,7 +90,7 @@ uint32_t cpnd_ckpt_replica_create(CPND_C uint32_t > cpnd_ckpt_remote_cpnd_add(CPND_CKPT_NODE *cp_node, MDS_DEST mds_info); > uint32_t cpnd_ckpt_remote_cpnd_del(CPND_CKPT_NODE *cp_node, MDS_DEST > mds_info); int32_t cpnd_ckpt_get_lck_sec_id(CPND_CKPT_NODE *cp_node); > -uint32_t cpnd_ckpt_sec_write(CPND_CKPT_NODE *cp_node, > CPND_CKPT_SECTION_INFO > +uint32_t cpnd_ckpt_sec_write(CPND_CB *cb, CPND_CKPT_NODE *cp_node, > +CPND_CKPT_SECTION_INFO > *sec_info, const void *data, uint64_t size, > uint64_t offset, uint32_t type); uint32_t cpnd_ckpt_sec_read(CPND_CKPT_NODE > *cp_node, CPND_CKPT_SECTION_INFO > *sec_info, void *data, uint64_t size, uint64_t > offset); @@ -164,7 +164,7 @@ void cpnd_evt_node_getnext(CPND_CB *cb, > uint32_t cpnd_evt_node_add(CPND_CB *cb, CPSV_CPND_ALL_REPL_EVT_NODE > *evt_node); uint32_t cpnd_evt_node_del(CPND_CB *cb, > CPSV_CPND_ALL_REPL_EVT_NODE *evt_node); CPND_CKPT_NODE > *cpnd_ckpt_node_find_by_name(CPND_CB *cpnd_cb, SaConstStringT ckpt_name); > -CPND_CKPT_SECTION_INFO *cpnd_ckpt_sec_add(CPND_CKPT_NODE *cp_node, > SaCkptSectionIdT *id, SaTimeT exp_time, > +CPND_CKPT_SECTION_INFO *cpnd_ckpt_sec_add(CPND_CB *cb, CPND_CKPT_NODE > +*cp_node, SaCkptSectionIdT *id, SaTimeT exp_time, > uint32_t gen_flag); > void cpnd_evt_backup_queue_add(CPND_CKPT_NODE *cp_node, CPND_EVT *evt); > uint32_t cpnd_ckpt_node_tree_init(CPND_CB *cb); @@ -176,8 +176,8 @@ void > cpnd_client_node_tree_cleanup(CPND_ > void cpnd_client_node_tree_destroy(CPND_CB *cb); void > cpnd_allrepl_write_evt_node_tree_cleanup(CPND_CB *cb); void > cpnd_allrepl_write_evt_node_tree_destroy(CPND_CB *cb); -uint32_t > cpnd_sec_hdr_update(CPND_CKPT_SECTION_INFO *pSecPtr, CPND_CKPT_NODE > *cp_node); -uint32_t cpnd_ckpt_hdr_update(CPND_CKPT_NODE *cp_node); > +uint32_t cpnd_sec_hdr_update(CPND_CB *cb, CPND_CKPT_SECTION_INFO > +*pSecPtr, CPND_CKPT_NODE *cp_node); uint32_t > +cpnd_ckpt_hdr_update(CPND_CB *cb, CPND_CKPT_NODE *cp_node); > void cpnd_ckpt_node_destroy(CPND_CB *cb, CPND_CKPT_NODE *cp_node); > uint32_t cpnd_get_slot_sub_slot_id_from_mds_dest(MDS_DEST dest); uint32_t > cpnd_get_slot_sub_slot_id_from_node_id(NCS_NODE_ID i_node_id); diff --git > a/osaf/libs/common/cpsv/include/cpnd_sec.h > b/osaf/libs/common/cpsv/include/cpnd_sec.h > --- a/osaf/libs/common/cpsv/include/cpnd_sec.h > +++ b/osaf/libs/common/cpsv/include/cpnd_sec.h > @@ -39,7 +39,7 @@ CPND_CKPT_SECTION_INFO * cpnd_ckpt_sec_get_create(const > CPND_CKPT_NODE *, const SaCkptSectionIdT *); > > CPND_CKPT_SECTION_INFO * > -cpnd_ckpt_sec_del(CPND_CKPT_NODE *, SaCkptSectionIdT *); > +cpnd_ckpt_sec_del(CPND_CB *cb, CPND_CKPT_NODE *, SaCkptSectionIdT *); > > CPND_CKPT_SECTION_INFO * > cpnd_get_sect_with_id(const CPND_CKPT_NODE *, uint32_t lcl_sec_id); diff > --git a/osaf/libs/core/include/ncs_osprm.h > b/osaf/libs/core/include/ncs_osprm.h > --- a/osaf/libs/core/include/ncs_osprm.h > +++ b/osaf/libs/core/include/ncs_osprm.h > @@ -564,7 +564,6 @@ typedef struct ncs_os_posix_shm_req_open > uint32_t i_flags; > uint32_t i_map_flags; > uint64_t i_size; > - bool ensures_space; > uint64_t i_offset; > void *o_addr; > int32_t o_fd; > @@ -600,6 +599,7 @@ typedef struct ncs_os_posix_shm_req_writ > > typedef struct ncs_shm_req_info { > NCS_OS_POSIX_SHM_REQ_TYPE type; > + bool ensures_space; > > union { > NCS_OS_POSIX_SHM_REQ_OPEN_INFO open; diff --git > a/osaf/services/saf/cpsv/cpnd/cpnd_db.c > b/osaf/services/saf/cpsv/cpnd/cpnd_db.c > --- a/osaf/services/saf/cpsv/cpnd/cpnd_db.c > +++ b/osaf/services/saf/cpsv/cpnd/cpnd_db.c > @@ -384,7 +384,7 @@ uint32_t cpnd_evt_node_del(CPND_CB *cb, > * > * Notes : None. > > **************************************************************************** > */ > -CPND_CKPT_SECTION_INFO *cpnd_ckpt_sec_add(CPND_CKPT_NODE *cp_node, > SaCkptSectionIdT *id, > +CPND_CKPT_SECTION_INFO *cpnd_ckpt_sec_add(CPND_CB *cb, CPND_CKPT_NODE > +*cp_node, SaCkptSectionIdT *id, > SaTimeT exp_time, uint32_t > gen_flag) { > CPND_CKPT_SECTION_INFO *pSecPtr = NULL; @@ -453,15 +453,15 @@ > CPND_CKPT_SECTION_INFO *cpnd_ckpt_sec_ad > cp_node->replica_info.n_secs++; > > /* UPDATE THE SECTION HEADER */ > - rc = cpnd_sec_hdr_update(pSecPtr, cp_node); > + rc = cpnd_sec_hdr_update(cb, pSecPtr, cp_node); > if (rc == NCSCC_RC_FAILURE) { > - LOG_NO("cpnd sect hdr update failed"); > + LOG_ER("cpnd sect hdr update failed"); > goto section_hdr_update_fails; > } > /* UPDATE THE CHECKPOINT HEADER */ > - rc = cpnd_ckpt_hdr_update(cp_node); > + rc = cpnd_ckpt_hdr_update(cb, cp_node); > if (rc == NCSCC_RC_FAILURE) { > - LOG_NO("cpnd ckpt hdr update failed"); > + LOG_ER("cpnd ckpt hdr update failed"); > goto ckpt_hdr_update_fails; > } > > @@ -470,7 +470,7 @@ CPND_CKPT_SECTION_INFO *cpnd_ckpt_sec_ad > > section_hdr_update_fails: > ckpt_hdr_update_fails: > - cpnd_ckpt_sec_del(cp_node, id); > + cpnd_ckpt_sec_del(cb, cp_node, id); > > section_add_fails: > if (pSecPtr->sec_id.id != NULL) > diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_evt.c > b/osaf/services/saf/cpsv/cpnd/cpnd_evt.c > --- a/osaf/services/saf/cpsv/cpnd/cpnd_evt.c > +++ b/osaf/services/saf/cpsv/cpnd/cpnd_evt.c > @@ -834,10 +834,12 @@ static uint32_t cpnd_evt_proc_ckpt_open( > } > > /* UPDATE THE CHECKPOINT HEADER */ > - rc = cpnd_ckpt_hdr_update(cp_node); > + rc = cpnd_ckpt_hdr_update(cb, cp_node); > if (rc == NCSCC_RC_FAILURE) { > - TRACE_4("cpnd ckpt hdr update failed > ckpt_name:%s,client_hdl:%llx", > + LOG_ER("cpnd ckpt hdr update failed > ckpt_name:%s,client_hdl:%llx", > ckpt_name, client_hdl); > + send_evt.info.cpa.info.openRsp.error = > SA_AIS_ERR_NO_RESOURCES; > + goto ckpt_node_free_error; > } > } > > @@ -861,7 +863,7 @@ static uint32_t cpnd_evt_proc_ckpt_open( > cp_node->create_attrib.maxSections == 1) { > > SaCkptSectionIdT sec_id = > SA_CKPT_DEFAULT_SECTION_ID; > - if(cpnd_ckpt_sec_add(cp_node, &sec_id, 0, 0) == > NULL) { > + if(cpnd_ckpt_sec_add(cb, cp_node, &sec_id, 0, 0) == > NULL) { > TRACE_4("cpnd ckpt rep create failed with > rc:%d",rc); > goto ckpt_shm_node_free_error; > } > @@ -1275,7 +1277,12 @@ static uint32_t cpnd_evt_proc_ckpt_unlin > cp_node->ckpt_name = strdup(""); > > if (cp_node->cpnd_rep_create) { > - rc = cpnd_ckpt_hdr_update(cp_node); > + rc = cpnd_ckpt_hdr_update(cb, cp_node); > + if (rc == NCSCC_RC_FAILURE) { > + error = SA_AIS_ERR_NO_RESOURCES; > + LOG_ER("cpnd ckpt hdr update failed for > ckpt_id:%llx,rc:%d",cp_node->ckpt_id, rc); > + goto agent_rsp; > + } > > } > TRACE_4("cpnd proc ckpt unlink set for > ckpt_id:%llx",cp_node->ckpt_id); @@ -1484,7 +1491,11 @@ static uint32_t > cpnd_evt_proc_ckpt_rdset > cp_node->is_rdset = true; > /*Non-collocated which does not have replica */ > if (cp_node->cpnd_rep_create) > - cpnd_ckpt_hdr_update(cp_node); > + if (cpnd_ckpt_hdr_update(cb, cp_node) == NCSCC_RC_FAILURE) > { > + LOG_ER("cpnd sect hdr update failed"); > + send_evt.info.cpa.info.rdsetRsp.error = > SA_AIS_ERR_NO_RESOURCES; > + goto out_evt_free; > + } > > send_evt.info.cpa.info.rdsetRsp.error = SA_AIS_OK; > > @@ -1631,9 +1642,13 @@ static uint32_t cpnd_evt_proc_ckpt_arep_ > } > } > > - rc = cpnd_ckpt_hdr_update(cp_node); > - > - send_evt.info.cpa.info.arsetRsp.error = SA_AIS_OK; > + rc = cpnd_ckpt_hdr_update(cb, cp_node); > + if (rc == NCSCC_RC_FAILURE) { > + LOG_ER("cpnd ckpt hdr update failed"); > + send_evt.info.cpa.info.arsetRsp.error = > SA_AIS_ERR_NO_RESOURCES; > + } else { > + send_evt.info.cpa.info.arsetRsp.error = SA_AIS_OK; > + } > goto agent_rsp; > > agent_rsp: > @@ -2082,7 +2097,11 @@ static uint32_t cpnd_evt_proc_ckpt_sect_ > sec_info->ckpt_sec_exptmr.uarg = cb->cpnd_cb_hdl_id; > sec_info->ckpt_sec_exptmr.lcl_sec_id = > sec_info->lcl_sec_id; > > - cpnd_sec_hdr_update(sec_info, cp_node); > + if (cpnd_sec_hdr_update(cb, sec_info, cp_node) == > NCSCC_RC_FAILURE) { > + LOG_ER("cpnd sect hdr update failed"); > + send_evt.info.cpa.info.sec_exptmr_rsp.error > = SA_AIS_ERR_NO_RESOURCES; > + goto agent_rsp; > + } > > cpnd_tmr_start(&sec_info->ckpt_sec_exptmr, > > m_CPSV_CONVERT_SATIME_TEN_MILLI_SEC(sec_info->exp_tmr)); > @@ -2108,7 +2127,11 @@ static uint32_t cpnd_evt_proc_ckpt_sect_ > } > if (cp_node->cpnd_rep_create) { > sec_info->exp_tmr = evt->info.sec_expset.exp_time; > - cpnd_sec_hdr_update(sec_info, cp_node); > + if (cpnd_sec_hdr_update(cb, sec_info, cp_node) == > NCSCC_RC_FAILURE) { > + LOG_ER("cpnd sect hdr update failed"); > + send_evt.info.cpa.info.sec_exptmr_rsp.error > = SA_AIS_ERR_NO_RESOURCES; > + goto agent_rsp; > + } > } > } > > @@ -2237,11 +2260,11 @@ static uint32_t cpnd_evt_proc_ckpt_sect_ > > if (cp_node->cpnd_rep_create) { > if (gen_sec_id) > - sec_info = cpnd_ckpt_sec_add(cp_node, > evt->info.sec_creatReq.sec_attri.sectionId, > + sec_info = cpnd_ckpt_sec_add(cb, cp_node, > +evt->info.sec_creatReq.sec_attri.sectionId, > > evt->info.sec_creatReq.sec_attri.expirationTime, 1); > > else > - sec_info = cpnd_ckpt_sec_add(cp_node, > evt->info.sec_creatReq.sec_attri.sectionId, > + sec_info = cpnd_ckpt_sec_add(cb, cp_node, > +evt->info.sec_creatReq.sec_attri.sectionId, > > evt->info.sec_creatReq.sec_attri.expirationTime, 0); > > if (sec_info == NULL) { > @@ -2255,7 +2278,7 @@ static uint32_t cpnd_evt_proc_ckpt_sect_ > > if ((evt->info.sec_creatReq.init_data != NULL) && > (evt->info.sec_creatReq.init_size != 0)) { > > - rc = cpnd_ckpt_sec_write(cp_node, sec_info, > evt->info.sec_creatReq.init_data, > + rc = cpnd_ckpt_sec_write(cb, cp_node, sec_info, > +evt->info.sec_creatReq.init_data, > > evt->info.sec_creatReq.init_size, 0, 1); > if (rc == NCSCC_RC_FAILURE) { > TRACE_4("cpnd ckpt sect write failed for > section_is:%s,ckpt_id:%llx",sec_info->sec_id.id, cp_node->ckpt_id); @@ > -2357,10 +2380,10 @@ static uint32_t cpnd_evt_proc_ckpt_sect_ > /* delete > the section */ > if > (gen_sec_id) > > tmp_sec_info = > - > cpnd_ckpt_sec_del(cp_node, &sec_info->sec_id); > + > cpnd_ckpt_sec_del(cb, cp_node, &sec_info->sec_id); > else > > tmp_sec_info = > - > cpnd_ckpt_sec_del(cp_node, > + > cpnd_ckpt_sec_del(cb, cp_node, > > evt->info.sec_creatReq. > > sec_attri.sectionId); > > @@ -2494,7 +2517,7 @@ static uint32_t cpnd_evt_proc_ckpt_sect_ > rc = cpnd_ckpt_sec_find(cp_node, &evt->info.sec_delReq.sec_id); > if (rc == NCSCC_RC_SUCCESS) { > > - sec_info = cpnd_ckpt_sec_del(cp_node, > &evt->info.sec_delReq.sec_id); > + sec_info = cpnd_ckpt_sec_del(cb, cp_node, > +&evt->info.sec_delReq.sec_id); > /* resetting lcl_sec_id mapping */ > if (sec_info == NULL) { > rc = NCSCC_RC_FAILURE; > @@ -2639,7 +2662,7 @@ static uint32_t cpnd_evt_proc_nd2nd_ckpt > } > > if (cp_node->cpnd_rep_create) { > - sec_info = cpnd_ckpt_sec_add(cp_node, > evt->info.active_sec_creat.sec_attri.sectionId, > + sec_info = cpnd_ckpt_sec_add(cb, cp_node, > +evt->info.active_sec_creat.sec_attri.sectionId, > > evt->info.active_sec_creat.sec_attri.expirationTime, 0); > if (sec_info == NULL) { > TRACE_4("cpnd ckpt sect add failed for > sect_id:%s,ckpt_id:%llx", @@ -2649,7 +2672,7 @@ static uint32_t > cpnd_evt_proc_nd2nd_ckpt > } > > if (evt->info.active_sec_creat.init_data != NULL) { > - rc = cpnd_ckpt_sec_write(cp_node, sec_info, > evt->info.active_sec_creat.init_data, > + rc = cpnd_ckpt_sec_write(cb, cp_node, sec_info, > +evt->info.active_sec_creat.init_data, > > evt->info.active_sec_creat.init_size, 0, 1); > if (rc == NCSCC_RC_FAILURE) { > TRACE_4("cpnd ckpt sect write failed "); @@ > -2774,7 +2797,7 @@ static uint32_t cpnd_evt_proc_nd2nd_ckpt > send_evt.info.cpnd.info.sec_delete_rsp.error = > SA_AIS_ERR_TRY_AGAIN; > goto nd_rsp; > } > - sec_info = cpnd_ckpt_sec_del(cp_node, > &evt->info.sec_delete_req.sec_id); > + sec_info = cpnd_ckpt_sec_del(cb, cp_node, > +&evt->info.sec_delete_req.sec_id); > if (sec_info == NULL) { > if > (m_CPND_IS_COLLOCATED_ATTR_SET(cp_node->create_attrib.creationFlags)) { > TRACE_4("cpnd ckpt sect del failed for > sec_id:%s,ckpt_id:%llx", @@ -2883,7 +2906,13 @@ static uint32_t > cpnd_evt_proc_nd2nd_ckpt > sec_info->ckpt_sec_exptmr.ckpt_id = > cp_node->ckpt_id; > > if (cp_node->cpnd_rep_create) { > - cpnd_sec_hdr_update(sec_info, cp_node); > + if ((cpnd_sec_hdr_update(cb, sec_info, > cp_node)) == NCSCC_RC_FAILURE) { > + LOG_ER("cpnd sect hdr update > failed"); > + send_evt.type = CPSV_EVT_TYPE_CPND; > + send_evt.info.cpnd.type = > CPSV_EVT_ND2ND_CKPT_SECT_EXPTMR_RSP; > + > send_evt.info.cpnd.info.sec_exp_rsp.error = SA_AIS_ERR_NO_RESOURCES; > + goto nd_rsp; > + } > } > cpnd_tmr_start(&sec_info->ckpt_sec_exptmr, > sec_info->exp_tmr); > } > @@ -4144,15 +4173,16 @@ static uint32_t cpnd_evt_proc_ckpt_creat > TRACE_4("cpnd ckpt rep create failed for > ckpt_id:%llx,rc:%d",cp_node->ckpt_id, rc); > goto ckpt_replica_create_failed; > } > - rc = cpnd_ckpt_hdr_update(cp_node); > + rc = cpnd_ckpt_hdr_update(cb, cp_node); > if (rc == NCSCC_RC_FAILURE) { > - TRACE_4("cpnd ckpt hdr update failed for > ckpt_id:%llx,rc:%d",cp_node->ckpt_id, rc); > + LOG_ER("cpnd ckpt hdr update failed for > ckpt_id:%llx,rc:%d",cp_node->ckpt_id, rc); > + goto ckpt_replica_create_failed; > } > > } > if (evt->info.ckpt_create.ckpt_info.ckpt_rep_create == true > && cp_node->create_attrib.maxSections == 1) { > SaCkptSectionIdT sec_id = > SA_CKPT_DEFAULT_SECTION_ID; > - if (cpnd_ckpt_sec_add(cp_node, &sec_id, 0, 0) == > NULL) { > + if (cpnd_ckpt_sec_add(cb, cp_node, &sec_id, 0, 0) == > NULL) { > TRACE_4("cpnd ckpt rep create failed with > rc:%d",rc); > goto ckpt_replica_create_failed; > } > @@ -4167,9 +4197,10 @@ static uint32_t cpnd_evt_proc_ckpt_creat > TRACE_4("cpnd ckpt rep create failed with > rc:%d",rc); > goto ckpt_replica_create_failed; > } > - rc = cpnd_ckpt_hdr_update(cp_node); > + rc = cpnd_ckpt_hdr_update(cb, cp_node); > if (rc == NCSCC_RC_FAILURE) { > TRACE_4("CPND - Ckpt Header Update Failed with > rc:%d",rc); > + goto ckpt_replica_create_failed; > } > } > > @@ -4185,7 +4216,8 @@ static uint32_t cpnd_evt_proc_ckpt_creat > rc = cpnd_mds_msg_send(cb, NCSMDS_SVC_ID_CPND, > cp_node->active_mds_dest, &send_evt); > > if (rc != NCSCC_RC_SUCCESS) { > - TRACE_4("cpnd remote to active mds send failed for > cpnd_mdest_id:%"PRIu64",active_mds_dest:%"PRIu64",ckpt_id:%llx,rc%d",cb->cpn > d_mdest_id, cp_node->active_mds_dest, cp_node->ckpt_id, rc); > + TRACE_4("cpnd remote to active mds send failed for > cpnd_mdest_id:%"PRIu64",active_mds_dest:%"PRIu64",ckpt_id:%llx,rc%d", > + cb->cpnd_mdest_id, cp_node->active_mds_dest, > cp_node->ckpt_id, rc); > > goto ckpt_replica_create_failed; > } > diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_proc.c > b/osaf/services/saf/cpsv/cpnd/cpnd_proc.c > --- a/osaf/services/saf/cpsv/cpnd/cpnd_proc.c > +++ b/osaf/services/saf/cpsv/cpnd/cpnd_proc.c > @@ -478,10 +478,7 @@ uint32_t cpnd_ckpt_replica_create(CPND_C > cp_node->replica_info.open.info.open.i_size = > sizeof(CPSV_CKPT_HDR) + cp_node->create_attrib.maxSections * > (sizeof(CPSV_SECT_HDR) + > > cp_node->create_attrib.maxSectionSize); > - if (cb->shm_alloc_guaranteed == true) > - cp_node->replica_info.open.info.open.ensures_space = true; > - else > - cp_node->replica_info.open.info.open.ensures_space = false; > + cp_node->replica_info.open.ensures_space = cb->shm_alloc_guaranteed; > > cp_node->replica_info.open.info.open.i_offset = 0; > cp_node->replica_info.open.info.open.i_name = buf; @@ -642,7 +639,7 > @@ int32_t cpnd_ckpt_get_lck_sec_id(CPND_CK > * > * Notes : None. > > **************************************************************************** > */ > -uint32_t cpnd_ckpt_sec_write(CPND_CKPT_NODE *cp_node, > CPND_CKPT_SECTION_INFO > +uint32_t cpnd_ckpt_sec_write(CPND_CB *cb, CPND_CKPT_NODE *cp_node, > +CPND_CKPT_SECTION_INFO > *sec_info, const void *data, uint64_t size, > uint64_t offset, uint32_t type) > { /* for sync type=2 */ > uint32_t rc = NCSCC_RC_SUCCESS; > @@ -674,7 +671,7 @@ uint32_t cpnd_ckpt_sec_write(CPND_CKPT_N > write_req.info.write.i_offset = offset; > > write_req.info.write.i_write_size = size; > - > + write_req.ensures_space = cb->shm_alloc_guaranteed; > ncs_os_posix_shm(&write_req); > > m_GET_TIME_STAMP(sec_info->lastUpdate); > @@ -687,13 +684,19 @@ uint32_t cpnd_ckpt_sec_write(CPND_CKPT_N > } > > /* SECTION HEADER UPDATE */ > - cpnd_sec_hdr_update(sec_info, cp_node); > + if (cpnd_sec_hdr_update(cb, sec_info, cp_node) == > NCSCC_RC_FAILURE) { > + LOG_ER("cpnd sect hdr update failed"); > + rc = NCSCC_RC_FAILURE; > + } > > } else if ((type == 1) || (type == 3)) { > cp_node->replica_info.mem_used -= sec_info->sec_size; > sec_info->sec_size = size; > cp_node->replica_info.mem_used += size; > - cpnd_sec_hdr_update(sec_info, cp_node); > + if ((cpnd_sec_hdr_update(cb, sec_info, cp_node)) == > NCSCC_RC_FAILURE) { > + LOG_ER("cpnd sect hdr update failed"); > + rc = NCSCC_RC_FAILURE; > + } > } > TRACE_LEAVE(); > return rc; > @@ -958,7 +961,7 @@ uint32_t cpnd_ckpt_update_replica(CPND_C > sec_info = cpnd_ckpt_sec_get_create(cp_node, &data->sec_id); > if (sec_info == NULL) { > if (type == CPSV_CKPT_ACCESS_SYNC) { > - sec_info = cpnd_ckpt_sec_add(cp_node, > &data->sec_id, data->expirationTime, 0); > + sec_info = cpnd_ckpt_sec_add(cb, cp_node, > &data->sec_id, > +data->expirationTime, 0); > > if (sec_info == NULL) { > TRACE_4("cpnd - ckpt sect add failed > , sec_id:%s ckpt_id:%llx",data->sec_id.id,cp_node->ckpt_id); > @@ -975,7 +978,7 @@ uint32_t cpnd_ckpt_update_replica(CPND_C > } > } > > - rc = cpnd_ckpt_sec_write(cp_node, sec_info, data->data, > data->dataSize, > + rc = cpnd_ckpt_sec_write(cb, cp_node, sec_info, data->data, > +data->dataSize, > data->dataOffset, > write_data->type); > if (rc == NCSCC_RC_FAILURE) { > TRACE("cpnd ckpt sect write failed for > sec_id:%s",data->sec_id.id); @@ -1544,7 +1547,7 @@ uint32_t > cpnd_proc_sec_expiry(CPND_CB *c > return NCSCC_RC_FAILURE; > } > > - cpnd_ckpt_sec_del(cp_node, &pSec_info->sec_id); > + cpnd_ckpt_sec_del(cb, cp_node, &pSec_info->sec_id); > cp_node->replica_info.shm_sec_mapping[pSec_info->lcl_sec_id] = 1; > > /* send out destory to all cpnd's maintaining this ckpt */ @@ > -1804,7 +1807,7 @@ cpnd_proc_getnext_section(CPND_CKPT_NODE > * Return Values : Success / Error > > **************************************************************************** > / > > -uint32_t cpnd_ckpt_hdr_update(CPND_CKPT_NODE *cp_node) > +uint32_t cpnd_ckpt_hdr_update(CPND_CB *cb, CPND_CKPT_NODE *cp_node) > { > CPSV_CKPT_HDR ckpt_hdr; > uint32_t rc = NCSCC_RC_SUCCESS; > @@ -1830,6 +1833,7 @@ uint32_t cpnd_ckpt_hdr_update(CPND_CKPT_ > write_req.info.write.i_from_buff = (CPSV_CKPT_HDR *)&ckpt_hdr; > write_req.info.write.i_offset = 0; > write_req.info.write.i_write_size = sizeof(CPSV_CKPT_HDR); > + write_req.ensures_space = cb->shm_alloc_guaranteed; > rc = ncs_os_posix_shm(&write_req); > > return rc; > @@ -1846,7 +1850,7 @@ uint32_t cpnd_ckpt_hdr_update(CPND_CKPT_ > * Return Values : Success / Error > > **************************************************************************** > *******/ > > -uint32_t cpnd_sec_hdr_update(CPND_CKPT_SECTION_INFO *sec_info, > CPND_CKPT_NODE *cp_node) > +uint32_t cpnd_sec_hdr_update(CPND_CB *cb, CPND_CKPT_SECTION_INFO > +*sec_info, CPND_CKPT_NODE *cp_node) > { > CPSV_SECT_HDR sec_hdr; > uint32_t rc = NCSCC_RC_SUCCESS; > @@ -1872,6 +1876,7 @@ uint32_t cpnd_sec_hdr_update(CPND_CKPT_S > write_req.info.write.i_offset = > sec_info->lcl_sec_id * (sizeof(CPSV_SECT_HDR) + > cp_node->create_attrib.maxSectionSize); > write_req.info.write.i_write_size = sizeof(CPSV_SECT_HDR); > + write_req.ensures_space = cb->shm_alloc_guaranteed; > rc = ncs_os_posix_shm(&write_req); > > return rc; > diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_res.c > b/osaf/services/saf/cpsv/cpnd/cpnd_res.c > --- a/osaf/services/saf/cpsv/cpnd/cpnd_res.c > +++ b/osaf/services/saf/cpsv/cpnd/cpnd_res.c > @@ -149,8 +149,8 @@ uint32_t cpnd_res_ckpt_sec_del(CPND_CKPT > |-----------|----------|-----------|--------|----------|------------ > |----------|---------| > */ > > -uint32_t cpnd_ckpt_replica_create_res(NCS_OS_POSIX_SHM_REQ_INFO *open_req, > char *buf, CPND_CKPT_NODE **cp_node, > - uint32_t ref_cnt, CKPT_INFO *cp_info, > bool shm_alloc_guaranteed) > +uint32_t cpnd_ckpt_replica_create_res(CPND_CB *cb, > NCS_OS_POSIX_SHM_REQ_INFO *open_req, char *buf, CPND_CKPT_NODE **cp_node, > + uint32_t ref_cnt, CKPT_INFO *cp_info) > { > /* NCS_OS_POSIX_SHM_REQ_INFO read_req,shm_read; */ > CPSV_CKPT_HDR ckpt_hdr; > @@ -165,15 +165,12 @@ uint32_t cpnd_ckpt_replica_create_res(NC > open_req->type = NCS_OS_POSIX_SHM_REQ_OPEN; > open_req->info.open.i_size = > sizeof(CPSV_CKPT_HDR) + (cp_info->maxSections * > ((sizeof(CPSV_SECT_HDR) + cp_info->maxSecSize))); > - if (shm_alloc_guaranteed == true) > - open_req->info.open.ensures_space = true; > - else > - open_req->info.open.ensures_space = false; > open_req->info.open.i_offset = 0; > open_req->info.open.i_name = buf; > open_req->info.open.i_map_flags = MAP_SHARED; > open_req->info.open.o_addr = NULL; > open_req->info.open.i_flags = O_RDWR; > + open_req->ensures_space = cb->shm_alloc_guaranteed; > rc = ncs_os_posix_shm(open_req); > if (rc != NCSCC_RC_SUCCESS) { > LOG_ER("cpnd shm open request failed %s",buf); @@ -362,10 > +359,7 @@ void *cpnd_restart_shm_create(NCS_OS_POS > cpnd_open_req->info.open.i_size = sizeof(CPND_SHM_VERSION) + > sizeof(CLIENT_HDR) + (MAX_CLIENTS * sizeof(CLIENT_INFO)) + > sizeof(CKPT_HDR) + > (MAX_CKPTS * sizeof(CKPT_INFO)); > - if (cb->shm_alloc_guaranteed == true) > - cpnd_open_req->info.open.ensures_space = true; > - else > - cpnd_open_req->info.open.ensures_space = false; > + cpnd_open_req->ensures_space = cb->shm_alloc_guaranteed; > cpnd_open_req->info.open.i_offset = 0; > cpnd_open_req->info.open.i_name = buffer; > cpnd_open_req->info.open.i_map_flags = MAP_SHARED; @@ -529,7 +523,7 > @@ void *cpnd_restart_shm_create(NCS_OS_POS > memset(buf, '\0', > CPND_MAX_REPLICA_NAME_LENGTH); > strncpy(buf, cp_node->ckpt_name, > CPND_REP_NAME_MAX_CKPT_NAME_LENGTH); > sprintf(buf + strlen(buf) - 1, > "_%u_%llu", (uint32_t)nodeid, cp_node->ckpt_id); > - rc = > cpnd_ckpt_replica_create_res(&ckpt_rep_open, buf, &cp_node, 0, &cp_info, > cb->shm_alloc_guaranteed); > + rc = > cpnd_ckpt_replica_create_res(cb, &ckpt_rep_open, buf, > +&cp_node, 0, &cp_info); > if (rc != NCSCC_RC_SUCCESS) { > /* assert(0); */ > TRACE_4("cpnd ckpt replica > create failed with return value %d",rc); @@ -1170,6 +1164,7 @@ uint32_t > cpnd_restart_client_node_del(CP > } > clinfo_write.info.write.i_offset = cl_node->offset * > sizeof(CLIENT_INFO); > clinfo_write.info.write.i_write_size = sizeof(CLIENT_INFO); > + clinfo_write.ensures_space = cb->shm_alloc_guaranteed; > rc = ncs_os_posix_shm(&clinfo_write); > if (rc != NCSCC_RC_SUCCESS) { > LOG_ER("cpnd ckpt info write failed"); @@ -1582,10 +1577,7 > @@ static uint32_t cpnd_shm_extended_open(C > > cpnd_open_req.type = NCS_OS_POSIX_SHM_REQ_OPEN; > cpnd_open_req.info.open.i_size = MAX_CKPTS * > sizeof(CKPT_EXTENDED_INFO); > - if (cb->shm_alloc_guaranteed == true) > - cpnd_open_req.info.open.ensures_space = true; > - else > - cpnd_open_req.info.open.ensures_space = false; > + cpnd_open_req.ensures_space = cb->shm_alloc_guaranteed; > cpnd_open_req.info.open.i_offset = 0; > cpnd_open_req.info.open.i_name = buffer; > cpnd_open_req.info.open.i_map_flags = MAP_SHARED; @@ -1738,4 +1730,4 > @@ static void cpnd_destroy_shm(NCS_OS_POSI > } > > TRACE_LEAVE(); > -} > \ No newline at end of file > +} > diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_sec.cc > b/osaf/services/saf/cpsv/cpnd/cpnd_sec.cc > --- a/osaf/services/saf/cpsv/cpnd/cpnd_sec.cc > +++ b/osaf/services/saf/cpsv/cpnd/cpnd_sec.cc > @@ -169,7 +169,7 @@ cpnd_ckpt_sec_find(const CPND_CKPT_NODE > * Notes : None. > > **************************************************************************** > */ > CPND_CKPT_SECTION_INFO * > -cpnd_ckpt_sec_del(CPND_CKPT_NODE *cp_node, SaCkptSectionIdT *id) > +cpnd_ckpt_sec_del(CPND_CB *cb, CPND_CKPT_NODE *cp_node, > +SaCkptSectionIdT *id) > { > CPND_CKPT_SECTION_INFO *sectionInfo(0); > > @@ -211,17 +211,17 @@ cpnd_ckpt_sec_del(CPND_CKPT_NODE *cp_nod > cp_node->replica_info.mem_used = cp_node->replica_info.mem_used - > (sectionInfo->sec_size); > > // UPDATE THE SECTION HEADER > - uint32_t rc(cpnd_sec_hdr_update(sectionInfo, cp_node)); > + uint32_t rc(cpnd_sec_hdr_update(cb, sectionInfo, cp_node)); > if (rc == NCSCC_RC_FAILURE) { > - TRACE_4("cpnd sect hdr update failed"); > + LOG_ER("cpnd sect hdr update failed"); > } > > // UPDATE THE CHECKPOINT HEADER > - rc = cpnd_ckpt_hdr_update(cp_node); > + rc = cpnd_ckpt_hdr_update(cb, cp_node); > if (rc == NCSCC_RC_FAILURE) { > - TRACE_4("cpnd ckpt hdr update failed"); > + LOG_ER("cpnd ckpt hdr update failed"); > } > - } > + } > > TRACE_LEAVE(); > > ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel