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.
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: [email protected] [mailto:[email protected]] 
Sent: Tuesday, November 29, 2016 5:37 PM
To: [email protected]; [email protected]
Cc: [email protected]
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to