osaf/libs/common/cpsv/include/cpd_cb.h |   5 +-
 osaf/services/saf/cpsv/cpd/cpd_db.c    |  38 +++++++++++++++--------
 osaf/services/saf/cpsv/cpd/cpd_imm.c   |  39 ++++++++++++++---------
 osaf/services/saf/cpsv/cpd/cpd_proc.c  |  32 +------------------
 osaf/services/saf/cpsv/cpd/cpd_sbevt.c |  55 +++++++++------------------------
 5 files changed, 68 insertions(+), 101 deletions(-)


diff --git a/osaf/libs/common/cpsv/include/cpd_cb.h 
b/osaf/libs/common/cpsv/include/cpd_cb.h
--- a/osaf/libs/common/cpsv/include/cpd_cb.h
+++ b/osaf/libs/common/cpsv/include/cpd_cb.h
@@ -267,10 +267,9 @@ uint32_t cpd_cb_db_init(CPD_CB *cb);
 
 uint32_t cpd_cb_db_destroy(CPD_CB *cb);
 
-void cpd_ckpt_ref_info_add(CPD_CPND_INFO_NODE *node_info, CPD_CKPT_REF_INFO 
*cref_info);
-
+void cpd_ckpt_ref_info_add(CPD_CPND_INFO_NODE *node_info, CPD_CKPT_INFO_NODE 
*ckpt_node);
 void cpd_ckpt_ref_info_del(CPD_CPND_INFO_NODE *node_info, CPD_CKPT_REF_INFO 
*cref_info);
-void cpd_node_ref_info_add(CPD_CKPT_INFO_NODE *ckpt_node, CPD_NODE_REF_INFO 
*nref_info);
+void cpd_node_ref_info_add(CPD_CKPT_INFO_NODE *ckpt_node, MDS_DEST *mds_dest);
 void cpd_node_ref_info_del(CPD_CKPT_INFO_NODE *ckpt_node, CPD_NODE_REF_INFO 
*nref_info);
 
 void cpd_clm_cluster_track_cb(const SaClmClusterNotificationBufferT 
*notificationBuffer,
diff --git a/osaf/services/saf/cpsv/cpd/cpd_db.c 
b/osaf/services/saf/cpsv/cpd/cpd_db.c
--- a/osaf/services/saf/cpsv/cpd/cpd_db.c
+++ b/osaf/services/saf/cpsv/cpd/cpd_db.c
@@ -439,7 +439,8 @@ uint32_t cpd_ckpt_reploc_node_delete(CPD
                        /* goto reploc_node_add_fail; */
                        TRACE_4("cpd db node add failed ");
                }
-               rc = NCSCC_RC_FAILURE;
+
+               return NCSCC_RC_FAILURE;
        }
 
        /* Free the Client Node */
@@ -981,20 +982,25 @@ uint32_t cpd_cb_db_destroy(CPD_CB *cb)
  * Description   : CPD_CKPT_REF_INFO Linked list manipulation function
  *
  *****************************************************************************/
-void cpd_ckpt_ref_info_add(CPD_CPND_INFO_NODE *node_info, CPD_CKPT_REF_INFO 
*cref_info)
+void cpd_ckpt_ref_info_add(CPD_CPND_INFO_NODE *node_info, CPD_CKPT_INFO_NODE 
*ckpt_node)
 {
+       CPD_CKPT_REF_INFO *cref_info = NULL;
 
-       CPD_CKPT_REF_INFO *cref = NULL;
        TRACE_ENTER();
 
-       cref = node_info->ckpt_ref_list;
-       while (cref) {
-               if (cref->ckpt_node->ckpt_id == cref_info->ckpt_node->ckpt_id)
+       cref_info = node_info->ckpt_ref_list;
+       while (cref_info) {
+               if (cref_info->ckpt_node->ckpt_id == ckpt_node->ckpt_id)
                        return;
 
-               cref = cref->next;
+               cref_info = cref_info->next;
        }
 
+       cref_info = (CPD_CKPT_REF_INFO *)malloc(sizeof(CPD_CKPT_REF_INFO));
+       memset(cref_info, 0, sizeof(CPD_CKPT_REF_INFO));
+
+       cref_info->ckpt_node = ckpt_node;
+
        /* Add the node at the begin of the linked list */
        cref_info->next = node_info->ckpt_ref_list;
        node_info->ckpt_ref_list = cref_info;
@@ -1048,19 +1054,25 @@ void cpd_ckpt_ref_info_del(CPD_CPND_INFO
  * Description   : CPD_NODE_REF_INFO Linked list manipulation function
  *
  *****************************************************************************/
-void cpd_node_ref_info_add(CPD_CKPT_INFO_NODE *ckpt_node, CPD_NODE_REF_INFO 
*nref_info)
+void cpd_node_ref_info_add(CPD_CKPT_INFO_NODE *ckpt_node, MDS_DEST *mds_dest)
 {
-       CPD_NODE_REF_INFO *nref = NULL;
+       CPD_NODE_REF_INFO *nref_info = NULL;
 
        TRACE_ENTER();
-       nref = ckpt_node->node_list;
-       while (nref) {
-               if (nref->dest == nref_info->dest)
+
+       nref_info = ckpt_node->node_list;
+       while (nref_info) {
+               if (m_NCS_MDS_DEST_EQUAL(&nref_info->dest, mds_dest))
                        return;
 
-               nref = nref->next;
+               nref_info = nref_info->next;
        }
 
+       nref_info = (CPD_NODE_REF_INFO *) malloc(sizeof(CPD_NODE_REF_INFO));
+       memset(nref_info, 0, sizeof(CPD_NODE_REF_INFO));
+
+       nref_info->dest = *mds_dest;
+
        /* Add the node at the begin of the linked list */
        nref_info->next = ckpt_node->node_list;
        ckpt_node->node_list = nref_info;
diff --git a/osaf/services/saf/cpsv/cpd/cpd_imm.c 
b/osaf/services/saf/cpsv/cpd/cpd_imm.c
--- a/osaf/services/saf/cpsv/cpd/cpd_imm.c
+++ b/osaf/services/saf/cpsv/cpd/cpd_imm.c
@@ -39,7 +39,7 @@ static SaAisErrorT cpd_saImmOiRtAttrUpda
                                                   const SaNameT *objectName, 
const SaImmAttrNameT *attributeNames);
 static uint32_t cpd_fetch_used_size(CPD_CKPT_INFO_NODE *ckpt_node, CPD_CB *cb);
 static uint32_t cpd_fetch_num_sections(CPD_CKPT_INFO_NODE *ckpt_node, CPD_CB 
*cb);
-static char* ckpt_replica_extract_node_name(char *src,char *key);
+static void  ckpt_replica_extract_node_name(SaNameT *nodeName, char *src);
 
 SaImmOiCallbacksT_2 oi_cbks = {
        .saImmOiAdminOperationCallback = NULL,
@@ -126,10 +126,8 @@ static SaAisErrorT cpd_saImmOiRtAttrUpda
        memset(node_name,0,(objectName->length-ckptName.length));
        node_name = 
(char*)memcpy(node_name,(char*)objectName->value,objectName->length-ckptName.length-1);
 
-       node_name = ckpt_replica_extract_node_name(node_name,"\\");
-       node_name = node_name + 11;     
-       strcpy((char*)nodeName.value, node_name);
-       nodeName.length = strlen(node_name);
+       ckpt_replica_extract_node_name(&nodeName, node_name);
+       free(node_name);
        }
 
        cpd_ckpt_map_node_get(&cb->ckpt_map_tree, &ckptName, &map_info);
@@ -628,21 +626,30 @@ static uint32_t cpd_fetch_num_sections(C
 
 
 
-static char *ckpt_replica_extract_node_name(char *src,char *key)
+static void ckpt_replica_extract_node_name(SaNameT *nodeName, char *src)
 {
-       char *dest = NULL;
+       char *dest = NULL, *dest_name;
        SaUint32T len_src = 0;
        SaUint32T i = 0, k = 0;
-       len_src = strlen( src );
-       dest = (char *) malloc( sizeof( char ) * len_src + 1 );
-       memset( dest, 0, sizeof( char ) * len_src + 1 );
-       for ( i = 0; i < len_src; i++ ) {
-                if ( src[i] != '\\' ) {
-                        dest[k] = src[i];
-                        k++;
-                }
+
+       len_src = strlen(src);
+       dest = (char *) malloc(sizeof(char) * len_src + 1);
+       memset(dest, 0, sizeof(char) * len_src + 1);
+       for (i = 0; i < len_src; i++) {
+               if (src[i] != '\\') {
+                       dest[k] = src[i];
+                       k++;
+               }
        }
-       return dest;
+
+       /* 11 is the length of "safReplica=" */
+       dest_name = dest + 11;  
+       strcpy((char*)nodeName->value, dest_name);
+       nodeName->length = strlen(dest_name);
+
+       free(dest);
+
+       return;
 }
 
 /**
diff --git a/osaf/services/saf/cpsv/cpd/cpd_proc.c 
b/osaf/services/saf/cpsv/cpd/cpd_proc.c
--- a/osaf/services/saf/cpsv/cpd/cpd_proc.c
+++ b/osaf/services/saf/cpsv/cpd/cpd_proc.c
@@ -138,8 +138,6 @@ uint32_t cpd_ckpt_db_entry_update(CPD_CB
        CPD_CKPT_INFO_NODE *ckpt_node = NULL;
        CPD_CKPT_MAP_INFO *map_info = NULL;
        CPD_CKPT_REPLOC_INFO *reploc_info = NULL;
-       CPD_NODE_REF_INFO *nref_info = NULL;
-       CPD_CKPT_REF_INFO *cref_info = NULL;
        uint32_t proc_rc = NCSCC_RC_SUCCESS;
        SaCkptCheckpointHandleT ckpt_id = 0;
        bool add_flag = true, create_reploc_node = false;
@@ -169,15 +167,6 @@ uint32_t cpd_ckpt_db_entry_update(CPD_CB
                map_info = *io_map_info;
        }
 
-       nref_info = m_MMGR_ALLOC_CPD_NODE_REF_INFO;
-       cref_info = m_MMGR_ALLOC_CPD_CKPT_REF_INFO;
-
-       if (!(nref_info && cref_info)) {
-               TRACE_4("CPD DB add failed");
-               proc_rc = NCSCC_RC_OUT_OF_MEM;
-               goto free_mem;
-       }
-
        /* Get the CPD_CPND_INFO_NODE (CPND from where this ckpt is created) */
        proc_rc = cpd_cpnd_info_node_find_add(&cb->cpnd_tree, cpnd_dest, 
&node_info, &add_flag);
        if (!node_info) {
@@ -366,23 +355,12 @@ uint32_t cpd_ckpt_db_entry_update(CPD_CB
 
        if (noncoll_rep_on_payload != true) {
                /* Add the CPND Details (CPND reference) to the ckpt node */
-               memset(nref_info, 0, sizeof(CPD_NODE_REF_INFO));
-               nref_info->dest = *cpnd_dest;
-               cpd_node_ref_info_add(ckpt_node, nref_info);
+               cpd_node_ref_info_add(ckpt_node, cpnd_dest);
 
                /* Add the ckpt reference to the CPND node info */
-               memset(cref_info, 0, sizeof(CPD_CKPT_REF_INFO));
-               cref_info->ckpt_node = ckpt_node;
-               cpd_ckpt_ref_info_add(node_info, cref_info);
-       } else {
-               if (cref_info)
-                       m_MMGR_FREE_CPD_CKPT_REF_INFO(cref_info);
-
-               if (nref_info)
-                       m_MMGR_FREE_CPD_NODE_REF_INFO(nref_info);
+               cpd_ckpt_ref_info_add(node_info, ckpt_node);
        }
 
-
        TRACE_LEAVE();
        return NCSCC_RC_SUCCESS;
 
@@ -394,12 +372,6 @@ uint32_t cpd_ckpt_db_entry_update(CPD_CB
        return proc_rc;
 
  free_mem:
-       if (cref_info)
-               m_MMGR_FREE_CPD_CKPT_REF_INFO(cref_info);
-
-       if (nref_info)
-               m_MMGR_FREE_CPD_NODE_REF_INFO(nref_info);
-
        if (*io_map_info == NULL) {
                if (ckpt_node)
                        m_MMGR_FREE_CPD_CKPT_INFO_NODE(ckpt_node);
diff --git a/osaf/services/saf/cpsv/cpd/cpd_sbevt.c 
b/osaf/services/saf/cpsv/cpd/cpd_sbevt.c
--- a/osaf/services/saf/cpsv/cpd/cpd_sbevt.c
+++ b/osaf/services/saf/cpsv/cpd/cpd_sbevt.c
@@ -89,8 +89,6 @@ uint32_t cpd_sb_proc_ckpt_create(CPD_CB 
        CPD_CPND_INFO_NODE *node_info = NULL;
        CPD_CKPT_INFO_NODE *ckpt_node = NULL;
        CPD_CKPT_MAP_INFO *map_info = NULL;
-       CPD_NODE_REF_INFO *nref_info = NULL;
-       CPD_CKPT_REF_INFO *cref_info = NULL;
        uint32_t proc_rc = NCSCC_RC_SUCCESS;
        bool add_flag = true;
        uint32_t count, dest_cnt;
@@ -159,15 +157,6 @@ uint32_t cpd_sb_proc_ckpt_create(CPD_CB 
        ckpt_node->ret_time = 
msg->info.ckpt_create.ckpt_attrib.retentionDuration;
 
        for (count = 0; count < dest_cnt; count++) {
-               nref_info = m_MMGR_ALLOC_CPD_NODE_REF_INFO;
-               if (nref_info == NULL) {
-                       LOG_CR("memory allocation for cpd standby evt failed");
-                       proc_rc = NCSCC_RC_OUT_OF_MEM;
-                       goto nref_info_alloc_fail;
-               }
-
-               memset(nref_info, '\0', sizeof(CPD_NODE_REF_INFO));
-               nref_info->dest = msg->info.ckpt_create.dest_list[count].dest;
 
                /*  cpd_cpnd database is updated  */
                proc_rc = cpd_cpnd_info_node_find_add(&cb->cpnd_tree, 
&msg->info.ckpt_create.dest_list[count].dest,
@@ -175,12 +164,10 @@ uint32_t cpd_sb_proc_ckpt_create(CPD_CB 
                if (!node_info) {
                        TRACE_4("cpd standby create evt failed for mdsdest: 
%"PRIu64,msg->info.ckpt_create.dest_list[count].dest);
                        proc_rc = NCSCC_RC_OUT_OF_MEM;
-                       if (nref_info)
-                               m_MMGR_FREE_CPD_NODE_REF_INFO(nref_info);
                        goto cpd_cpnd_node_find_fail;
                }
                add_flag = true;
-               key = m_NCS_NODE_ID_FROM_MDS_DEST(nref_info->dest);
+               key = 
m_NCS_NODE_ID_FROM_MDS_DEST(msg->info.ckpt_create.dest_list[count].dest);
                node_id = key;
                if (saClmClusterNodeGet(cb->clm_hdl, node_id, 
CPD_CLM_API_TIMEOUT, &cluster_node) != SA_AIS_OK) {
                        proc_rc = NCSCC_RC_FAILURE;
@@ -220,12 +207,9 @@ uint32_t cpd_sb_proc_ckpt_create(CPD_CB 
                        cpd_ckpt_reploc_node_add(&cb->ckpt_reploc_tree, 
reploc_info, cb->ha_state, cb->immOiHandle);
 
                }
-               cref_info = m_MMGR_ALLOC_CPD_CKPT_REF_INFO;
 
-               memset(cref_info, 0, sizeof(CPD_CKPT_REF_INFO));
-               cref_info->ckpt_node = ckpt_node;
-               cpd_ckpt_ref_info_add(node_info, cref_info);
-               cpd_node_ref_info_add(ckpt_node, nref_info);
+               cpd_ckpt_ref_info_add(node_info, ckpt_node);
+               cpd_node_ref_info_add(ckpt_node, 
&msg->info.ckpt_create.dest_list[count].dest);
        }
 
        /* filling up the ckpt_node database */
@@ -242,7 +226,6 @@ uint32_t cpd_sb_proc_ckpt_create(CPD_CB 
  cpd_ckpt_node_add_fail:
  cluster_node_get_fail:
  cpd_cpnd_node_find_fail:
- nref_info_alloc_fail:
 
        if (ckpt_node) {
                cpd_ckpt_node_and_ref_delete(cb, ckpt_node);
@@ -472,30 +455,23 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
 {
        CPD_CKPT_INFO_NODE *ckpt_node = NULL;
        uint32_t proc_rc = NCSCC_RC_SUCCESS;
-       CPD_CKPT_REF_INFO *cref_info = NULL;
        CPD_CPND_INFO_NODE *node_info = NULL;
-       CPD_NODE_REF_INFO *nref_info = NULL;
        bool add_flag = true;
        NODE_ID key;
        SaClmNodeIdT node_id;
        CPD_CKPT_REPLOC_INFO *reploc_info = NULL;
        SaClmClusterNodeT cluster_node;
        CPD_REP_KEY_INFO key_info;
+       CPD_NODE_REF_INFO *nref_info;
 
        TRACE_ENTER();
+
        memset(&cluster_node, 0, sizeof(SaClmClusterNodeT));
        memset(&key_info, 0, sizeof(CPD_REP_KEY_INFO));
 
-       nref_info = m_MMGR_ALLOC_CPD_NODE_REF_INFO;
-       cref_info = m_MMGR_ALLOC_CPD_CKPT_REF_INFO;
-
-       memset(nref_info, 0, sizeof(CPD_NODE_REF_INFO));
-       memset(cref_info, 0, sizeof(CPD_CKPT_REF_INFO));
-
-       nref_info->dest = msg->info.dest_add.mds_dest;
        cpd_ckpt_node_get(&cb->ckpt_tree, &msg->info.dest_add.ckpt_id, 
&ckpt_node);
        if (ckpt_node)
-               cpd_node_ref_info_add(ckpt_node, nref_info);
+               cpd_node_ref_info_add(ckpt_node, &msg->info.dest_add.mds_dest);
        else {
                TRACE_4("cpd standby dest add evt failed for ckptid: 
%llx",msg->info.dest_add.ckpt_id);
                return NCSCC_RC_OUT_OF_MEM;
@@ -523,8 +499,6 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
        cpd_ckpt_reploc_get(&cb->ckpt_reploc_tree, &key_info, &reploc_info);
        if (reploc_info == NULL) {
                reploc_info = m_MMGR_ALLOC_CPD_CKPT_REPLOC_INFO;
-               if (reploc_info == NULL)
-                       goto free_mem;
 
                memset(reploc_info, 0, sizeof(CPD_CKPT_REPLOC_INFO));
 
@@ -553,18 +527,21 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
                }
        }
 
-       cref_info->ckpt_node = ckpt_node;
-       cpd_ckpt_ref_info_add(node_info, cref_info);
-
+       cpd_ckpt_ref_info_add(node_info, ckpt_node);
        
        TRACE_1("cpd standby destadd evt success ckpt_id %llx mdsdest: 
%"PRIu64, msg->info.dest_add.ckpt_id, msg->info.dest_add.mds_dest);
 
+       TRACE_LEAVE();
+       return proc_rc;
+
  free_mem:
-       if (node_info == NULL) {
-               cpd_node_ref_info_del(ckpt_node, nref_info);
-               m_MMGR_FREE_CPD_NODE_REF_INFO(nref_info);
-               m_MMGR_FREE_CPD_CKPT_REF_INFO(cref_info);
+       for (nref_info = ckpt_node->node_list; nref_info != NULL; nref_info = 
nref_info->next) {
+               if (m_NCS_MDS_DEST_EQUAL(&nref_info->dest, 
&msg->info.dest_del.mds_dest)) {
+                       cpd_node_ref_info_del(ckpt_node, nref_info);
+                       break;
+               }
        }
+
        TRACE_LEAVE();
        return proc_rc;
 }

------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to