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