From: Robert W. <wrw...@us...> - 2006-12-21 00:50:55
|
Update of /cvsroot/linuxisns/isnsNT/isnsserver/src In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv22581/src Modified Files: iSNSList.c iSNSquery.c iSNSreg.c Log Message: update adding members to dd Index: iSNSreg.c =================================================================== RCS file: /cvsroot/linuxisns/isnsNT/isnsserver/src/iSNSreg.c,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** iSNSreg.c 19 Dec 2006 20:34:38 -0000 1.18 --- iSNSreg.c 21 Dec 2006 00:50:51 -0000 1.19 *************** *** 1579,1583 **** *********************************************************************/ int ! Add_DD_Member ( SOIP_Dd * p_dd, char *ptr, int p_len, uint32_t type, uint32_t status, uint32_t index ) { --- 1579,1583 ---- *********************************************************************/ int ! Add_DD_Member ( SOIP_Dd * p_dd, char * p_node_name, int p_len, uint32_t type, uint32_t status, uint32_t index ) { *************** *** 1589,1638 **** int rval; SOIP_DB_Entry lentry; ! pnode = NULL; ! while ((pnode = GetNextNode(&p_dd->member_list, pnode))) ! { ! p_member = (SOIP_Dd_Member *)GetNodeData(pnode); ! ! if ((p_member->type == type) && ! (0 == memcmp (p_member->node_id, ptr, p_len))) ! /* found a match, do nothing */ ! return (ISNS_NO_ERR); ! } ! ! memset(&new_member, 0, sizeof(new_member)); /* Fetch iSCSI Node */ key.tag = ISCSI_ID_KEY; ! strcpy(key.val.node_key.v,ptr); rval = ISNSdbRead(&key,&lentry); if ( rval != SUCCESS) { ! new_member.node_idx = index; ! if (!new_member.node_idx) ! ! new_member.node_idx = ISNSGetNewISCSIIdx(); ! ISNS_DBKey idx_key; ! idx_key.tag = ISCSI_IDX_KEY; ! idx_key.val.idx.index_type = ISCSI_IDX_KEY; ! idx_key.val.idx.index = new_member.node_idx; ! SOIP_ISCSI_Node_Id *p_idx; ! memset (&entry3, 0, sizeof(SOIP_ISCSI_Node_Id)); ! entry3.data_type = ISCSI_IDX_KEY; ! p_idx = &entry3.data.iscsi_idx; ! memcpy(p_idx,&ptr,strlen(ptr)); ! rval = ISNSdbWrite(&idx_key,entry3); } else { p_node = (SOIP_Iscsi *)&lentry.data; ! new_member.node_idx = p_node->iscsi_index; } ! DEBUG_1 (isns_reg_debug &1, Add_DD_Member member.type:%i,type); new_member.type = type; new_member.status = status; ! memcpy (new_member.node_id, ptr, p_len); AddNode(&p_dd->member_list, (char *)&new_member, sizeof(new_member)); --- 1589,1648 ---- int rval; SOIP_DB_Entry lentry; + int index_number; ! DEBUG_1 (isns_reg_debug &1, Add_DD_Member:%s, p_node_name); /* Fetch iSCSI Node */ key.tag = ISCSI_ID_KEY; ! strcpy(key.val.node_key.v,p_node_name); rval = ISNSdbRead(&key,&lentry); if ( rval != SUCCESS) { ! index_number = index; } else { p_node = (SOIP_Iscsi *)&lentry.data; ! index_number = p_node->iscsi_index; } ! pnode = NULL; ! while ((pnode = GetNextNode(&p_dd->member_list, pnode))) ! { ! p_member = (SOIP_Dd_Member *)GetNodeData(pnode); ! ! if ((p_member->type == type) && ! (0 == memcmp (p_member->node_id, p_node_name, strlen(p_node_name) ))) ! { ! /* found a match */ ! /* update record */ ! key.tag = LIST_KEY; ! key.val.list.list_id = DD_MEMBER_LIST; ! key.val.list.list_index = pnode->index; ! key.val.list.key.dd.id = p_dd->id; ! rval = ISNSdbRead(&key,&lentry); ! if (rval != SUCCESS) ! return rval; ! ! p_member = &lentry.data.list.key.ddmember; ! p_member->node_idx = index_number; ! ! rval = ISNSdbWrite(&key,lentry); ! ! return (ISNS_NO_ERR); ! } ! } ! ! memset(&new_member, 0, sizeof(new_member)); ! new_member.type = type; new_member.status = status; ! memcpy (new_member.node_id, p_node_name, strlen(p_node_name)); ! new_member.node_idx = index_number; ! ! DEBUG_1 (isns_reg_debug &1, Add_DD_Member member.type:%i,new_member.type); ! DEBUG_1 (isns_reg_debug &1, Add_DD_Member member.node_id:%s,new_member.node_id); ! DEBUG_1 (isns_reg_debug &1, Add_DD_Member member.node_idx:%i,new_member.node_idx); AddNode(&p_dd->member_list, (char *)&new_member, sizeof(new_member)); *************** *** 2498,2501 **** --- 2508,2512 ---- p_node->iscsi_index = ISNSGetNewISCSIIdx(); + ISNS_DBKey idx_key; idx_key.tag = ISCSI_IDX_KEY; *************** *** 2508,2511 **** --- 2519,2523 ---- memcpy(p_idx,&p_node->id.v,sizeof(SOIP_ISCSI_Node_Id)); rval = ISNSdbWrite(&idx_key,entry3); + strncpy ( p_node->entity_id.id, db_entity.id, sizeof(p_node->entity_id.id) ); InitList(ISCSI_DD_LIST, p_node ); *************** *** 2515,2521 **** if ( SUCCESS != SNSdbFetchEntity (db_entity.id, &p_entity, &entry2) ) { - if ( newRegFlag ) - DeleteList( &p_node->dd_id_list ); - return ( ISNS_INVALID_REG_ERR ); } --- 2527,2530 ---- *************** *** 2524,2531 **** { DEBUG_1( isns_reg_debug & 1, (Entity is not ISCSI type: %d), p_entity->eid_type ); - - if ( newRegFlag ) - DeleteList( &p_node->dd_id_list ); - return ( ISNS_UNKNOWN_ERR ); } --- 2533,2536 ---- *************** *** 2628,2655 **** } - if ( newIscsiNodeFlag ) - new_scn_bitmap |= ISNS_SCN_OBJ_ADDED; - else if ( updateFlag ) - new_scn_bitmap |= ISNS_SCN_OBJ_UPDATED; - - - send_scn_parameter_change_to_all ( p_scn_all_msg_buffer, new_scn_bitmap); - /* Activate DD Membership */ ! if ( newIscsiNodeFlag ) ! { ! if ( SUCCESS != Activate_DD_Membership ( ISNS_DD_ISCSI_MEMBER, p_node ) ) ! { ! if ( newIscsiNodeFlag ) ! DeleteList( &p_node->dd_id_list ); ! ! return ( ERROR ); ! } ! } /* Store iSCSI Node Entry */ - if ( newIscsiNodeFlag ) - iSNS_stats.num_iscsi++; - ISNS_DBKey key; key.tag = ISCSI_ID_KEY; --- 2633,2640 ---- } /* Activate DD Membership */ ! Activate_DD_Membership ( ISNS_DD_ISCSI_MEMBER, p_node ); /* Store iSCSI Node Entry */ ISNS_DBKey key; key.tag = ISCSI_ID_KEY; *************** *** 2657,2664 **** rval = ISNSdbWrite(&key,entry); - new_scn_bitmap = 0; - if ( newIscsiNodeFlag ) { ISNSAppendKey ( p_rspmsg, ISNS_ISCSI_NODE_ID, --- 2642,2648 ---- rval = ISNSdbWrite(&key,entry); if ( newIscsiNodeFlag ) { + iSNS_stats.num_iscsi++; ISNSAppendKey ( p_rspmsg, ISNS_ISCSI_NODE_ID, *************** *** 2672,2675 **** --- 2656,2668 ---- } + if ( newIscsiNodeFlag ) + new_scn_bitmap |= ISNS_SCN_OBJ_ADDED; + else if ( updateFlag ) + new_scn_bitmap |= ISNS_SCN_OBJ_UPDATED; + + send_scn_parameter_change_to_all ( p_scn_all_msg_buffer, new_scn_bitmap); + + new_scn_bitmap = 0; + if ( p_node->activeFlag ) send_iscsi_scn_to_members ( p_node, NULL, p_scn_all_msg_buffer, new_scn_bitmap ); *************** *** 2782,2787 **** /* Fetch portal */ foundSCNPortal = FALSE; ! pnode = GetNextNode(&p_entity->iportal_list, pnode); ! while (pnode) { ISNS_DBKey read_key; --- 2775,2780 ---- /* Fetch portal */ foundSCNPortal = FALSE; ! pnode = NULL; ! while ( (pnode = GetNextNode(&p_entity->iportal_list, pnode)) != NULL) { ISNS_DBKey read_key; *************** *** 2892,2897 **** Add_DD_to_ISCSI_Node (SOIP_Dd *p_dd, char *p_node_name) { - SOIP_Iscsi *p_node; SOIP_DB_Entry lentry; int id; ISNS_DBKey key; --- 2885,2890 ---- Add_DD_to_ISCSI_Node (SOIP_Dd *p_dd, char *p_node_name) { SOIP_DB_Entry lentry; + SOIP_Iscsi *p_node; int id; ISNS_DBKey key; *************** *** 2917,2922 **** p_node->activeFlag = TRUE; - key.tag = ISCSI_ID_KEY; - strcpy(key.val.node_key.v,p_node_name); ISNSdbWrite(&key,lentry); --- 2910,2913 ---- *************** *** 3307,3312 **** DEBUG_0 (isns_reg_debug &1,Activate_DD_Membership); - Create_Default_DD (); - /* Get First DD Entry */ key.tag = DD_ID_KEY; --- 3298,3301 ---- *************** *** 3374,3377 **** --- 3363,3375 ---- p_member->node_idx = index; + switch ( type ) + { + case ISNS_DD_ISCSI_MEMBER: + Add_DD_Member(p_dd,p_iscsi->id.v,PAD4(strlen(p_iscsi->id.v)),ISNS_DD_ISCSI_MEMBER,ISNS_DD_MEMBER_ENABLE,p_iscsi->iscsi_index); + break; + default: + break; + } + if ( p_dd->activeFlag ) { *************** *** 3388,3392 **** } - /* Send SCN out to DD */ send_iscsi_scn_on_dd_mem_change(p_node, NULL, p_dd, 0, ISNS_SCN_OBJ_ADDED); --- 3386,3389 ---- *************** *** 3424,3428 **** break; } ! } if ( memberAddedFlag ) --- 3421,3425 ---- break; } ! } if ( memberAddedFlag ) *************** *** 3433,3436 **** --- 3430,3434 ---- { Add_ISCSINode_Default_DD (p_node); + switch ( type ) { *************** *** 3899,3903 **** int found; - /* check if default DD exists, if not create it */ rval = 0; dd_key.tag = DD_ID_KEY; --- 3897,3900 ---- *************** *** 3908,3917 **** if (rval != SUCCESS) return rval; ! p_dd = (SOIP_Dd *)&lentry2.data; if ( !strcmp("default DD",p_dd->sym_name) ) { found = TRUE; } } if (found) { --- 3905,3917 ---- if (rval != SUCCESS) return rval; ! ! p_dd = &lentry2.data.dd; if ( !strcmp("default DD",p_dd->sym_name) ) { found = TRUE; + break; } } + if (found) { *************** *** 3920,3927 **** AddNode(&p_node->dd_id_list, (char *)&p_dd->id, sizeof(p_dd->id)); } - p_node->activeFlag = TRUE; ! DEBUG_1 (isns_reg_debug &1,Add_DD_to_ISCSI_Node rval:%i,rval); ! Add_DD_Member(p_dd,p_node->id.v,PAD4(strlen(p_node->id.v)),ISNS_DD_ISCSI_MEMBER,ISNS_DD_MEMBER_ENABLE,0); ISNSdbWrite(&dd_key,lentry2); } --- 3920,3929 ---- AddNode(&p_node->dd_id_list, (char *)&p_dd->id, sizeof(p_dd->id)); } ! if ( p_dd->activeFlag ) ! p_node->activeFlag = TRUE; ! ! Add_DD_Member(p_dd,p_node->id.v,PAD4(strlen(p_node->id.v)),ISNS_DD_ISCSI_MEMBER,ISNS_DD_MEMBER_ENABLE,p_node->iscsi_index); ! ISNSdbWrite(&dd_key,lentry2); } Index: iSNSquery.c =================================================================== RCS file: /cvsroot/linuxisns/isnsNT/isnsserver/src/iSNSquery.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** iSNSquery.c 19 Dec 2006 22:25:31 -0000 1.14 --- iSNSquery.c 21 Dec 2006 00:50:51 -0000 1.15 *************** *** 683,686 **** --- 683,688 ---- int rval; + DEBUG_0 (isns_query_debug &1, SNSdbGetAttrDDEntry); + dd_key.id = id; key.tag = DD_ID_KEY; *************** *** 721,724 **** --- 723,728 ---- ISNS_LIST_NODE *pnode; + DEBUG_0 (isns_query_debug &1, SNSdbGetAttrDD); + ISNSTouchEntity( src_attr ); *************** *** 2611,2616 **** while ((pnode=GetNextNode(&p_dd->member_list, pnode))) { ! p_member=(SOIP_Dd_Member *)GetNodeData(pnode); ! if (p_member->type == ISNS_DD_ISCSI_MEMBER) ISNSAppendAttr (p_msg, ISNS_DD_ISCSI_MEMBER, PAD4 (strlen (p_member->node_id)), --- 2615,2620 ---- while ((pnode=GetNextNode(&p_dd->member_list, pnode))) { ! p_member=(SOIP_Dd_Member *)GetNodeData(pnode); ! if (p_member->type == ISNS_DD_ISCSI_MEMBER) ISNSAppendAttr (p_msg, ISNS_DD_ISCSI_MEMBER, PAD4 (strlen (p_member->node_id)), *************** *** 2633,2638 **** while ((pnode=GetNextNode(&p_dd->member_list, pnode))) { ! p_member=(SOIP_Dd_Member *)GetNodeData(pnode); ! if (p_member->type == ISNS_DD_ISCSI_MEMBER) ISNSAppendAttr (p_msg, ISNS_DD_ISCSI_MEMBER_IDX, ISNS_DD_ISCSI_MEMBER_IDX_SIZE, --- 2637,2642 ---- while ((pnode=GetNextNode(&p_dd->member_list, pnode))) { ! p_member=(SOIP_Dd_Member *)GetNodeData(pnode); ! if (p_member->type == ISNS_DD_ISCSI_MEMBER) ISNSAppendAttr (p_msg, ISNS_DD_ISCSI_MEMBER_IDX, ISNS_DD_ISCSI_MEMBER_IDX_SIZE, *************** *** 2864,2883 **** NULL, p_portal->portal_index); break; - default: - break; - } /* end for */ - } - } /* end for */ - } - - /* Process Portal Groups */ - for (jj = 0; (jj < SNS_MAX_ATTRS) && (attr_indx[jj]); jj++) - { - q_attr = (ISNS_Attr *) attr_indx[jj]; - DEBUG_1 (isns_query_debug &1, process attribute for portal group objects (%s),isnsTagText(q_attr->tag)); - - switch ( q_attr->tag ) - { - /* Located in the Portal object */ case ISNS_PORTAL_GROUP_PORT: DEBUG_1 (isns_query_debug &1,ISNS_PORTAL_GROUP_PORT:%i,p_portal->ip_port); --- 2868,2871 ---- *************** *** 2903,2907 **** } /* end for */ } ! return ( SUCCESS ); --- 2891,2896 ---- } /* end for */ } ! } /* end for */ ! } return ( SUCCESS ); Index: iSNSList.c =================================================================== RCS file: /cvsroot/linuxisns/isnsNT/isnsserver/src/iSNSList.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** iSNSList.c 15 Dec 2006 18:17:18 -0000 1.10 --- iSNSList.c 21 Dec 2006 00:50:51 -0000 1.11 *************** *** 592,596 **** if (rval != SUCCESS) return NULL; ! node->data_size = sizeof(SOIP_DB_Portal); node->data = (char *)ISNSAllocBuffer(node->data_size+1); memcpy(node->data,&entry.data.list.key.portal,node->data_size); --- 592,596 ---- if (rval != SUCCESS) return NULL; ! node->data_size = sizeof(entry.data.list.key.portal); node->data = (char *)ISNSAllocBuffer(node->data_size+1); memcpy(node->data,&entry.data.list.key.portal,node->data_size); *************** *** 636,640 **** if (rval != SUCCESS) return NULL; ! node->data_size = sizeof(entry.data.list.key.dd); node->data = (char *)ISNSAllocBuffer(node->data_size+1); memcpy(node->data,&entry.data.list.key.dd,node->data_size); --- 636,640 ---- if (rval != SUCCESS) return NULL; ! node->data_size = sizeof(entry.data.list.key.ddmember); node->data = (char *)ISNSAllocBuffer(node->data_size+1); memcpy(node->data,&entry.data.list.key.dd,node->data_size); *************** *** 647,651 **** if (rval != SUCCESS) return NULL; ! node->data_size = sizeof(SOIP_DB_Portal); node->data = (char *)ISNSAllocBuffer(node->data_size+1); memcpy(node->data,&entry.data.list.key.portal,node->data_size); --- 647,651 ---- if (rval != SUCCESS) return NULL; ! node->data_size = sizeof(entry.data.list.key.portal); node->data = (char *)ISNSAllocBuffer(node->data_size+1); memcpy(node->data,&entry.data.list.key.portal,node->data_size); |