Hi , On 3/31/2016 11:47 AM, Anders Widell wrote: > If we decide to go for this change in OpenSAF 5.0 then I will push it > as part of ticket [#1613]. We still need to verify that it doesn't > cause any problems during an upgrade.
I will test it today and let you know the result. -AVM > > regards, > Anders Widell > > On 03/31/2016 05:52 AM, A V Mahesh wrote: >> Hi Anders Widell, >> >> Is this patch will p[art of ticket #1613 or New ticket on top of >> #1613 ? >> >> -AVM >> >> On 3/30/2016 8:07 PM, Anders Widell wrote: >>> Hi! >>> >>> I have implemented the completely flat addressing in the attached >>> patch, but haven't tested if it causes any problems during an upgrade. >>> It should be applied on top of the patches for ticket [#1613]. Please >>> feel free to try it out! >>> >>> / Anders Widell >>> >>> On 03/29/2016 06:09 PM, Anders Widell wrote: >>>> I saw that it was also semi-hard-coded in /etc/opensaf/fmd.conf, but >>>> when looking a bit closer I notice that this configuration is not >>>> actually used by FM... :-) >>>> >>>> Ok, if we feel adventurous we could give it a try. The only known >>>> place >>>> where node_id has been hard-coded is SMF, which unfortunately is very >>>> much involved in upgrades. But the good thing is that thanks to ticket >>>> [#79], SMF will automatically discover the node_id of system >>>> controllers >>>> in OpenSAF 5.0. Thus, only pre-5.0 versions of SMF are problematic. It >>>> /might/ work, so let's try it! >>>> >>>> regards, >>>> Anders Widell >>>> >>>> On 03/29/2016 05:44 PM, Mathivanan Naickan Palanivelu wrote: >>>>> I guess we have deferred this (from moving to a direct mapping of >>>>> slot_id to the node_id) for a long time now. >>>>> I think SMF's dependency on fixed ids can (and must) be managed once >>>>> when we move to multiple standbys. >>>>> >>>>> Iam thinking where else we could get stuck during upgrade!? >>>>> >>>>> Mathi. >>>>> >>>>> >>>>> ----- [email protected] wrote: >>>>> >>>>>> It is "almost flat" in the proposed patches: the user only needs to >>>>>> configure slot_id on each node, in the range [1, 4095]. subslot_id >>>>>> should not be configured by the user. When using TIPC, the TIPC >>>>>> address >>>>>> of each node will be "1.1.slot_id". So the only non-flat thing is >>>>>> node_id, which is not configured by the user. We could have a direct >>>>>> mapping from slot_id to node_id (i.e. set node_id to the same >>>>>> value as >>>>>> >>>>>> slot_id), but I am worried about what will happen during an upgrade. >>>>>> Old >>>>>> nodes will translate e.g. slot_id 0x1 to node_id 0x2010f. New nodes >>>>>> will >>>>>> translate slot_id 0x1 to node_id 0x1. To make things worse, there >>>>>> are >>>>>> >>>>>> some places in OpenSAF that have been hard-coded to expect the two >>>>>> system controllers to have node_id 0x2010f and 0x2020f, >>>>>> respectively. >>>>>> >>>>>> Maybe we can make it work somehow, but I anticipate there could be >>>>>> problems during an upgrade. >>>>>> >>>>>> regards, >>>>>> Anders Widell >>>>>> >>>>>> On 03/29/2016 10:29 AM, Mathivanan Naickan Palanivelu wrote: >>>>>>> We should consider removing subslots entirely and go for a truly >>>>>> flat addressing scheme, if that is backward compatible. >>>>>>> There are other standard ways(PLM HE dependency) of provisioning >>>>>>> AMC >>>>>> subslots kind of hardware. >>>>>>> Mathi. >>>>>>> >>>>>>>> -----Original Message----- >>>>>>>> From: Anders Widell [mailto:[email protected]] >>>>>>>> Sent: Friday, March 18, 2016 9:38 PM >>>>>>>> To: Venkata Mahesh Alla >>>>>>>> Cc: [email protected] >>>>>>>> Subject: [devel] [PATCH 1 of 1] mds: Support up to 4095 nodes >>>>>> [#1613] >>>>>>>> osaf/libs/core/mds/include/mds_dt.h | 26 >>>>>> +++++++++++++++++--------- >>>>>>>> osaf/libs/core/mds/mds_c_db.c | 26 >>>>>> ++++++++++++-------------- >>>>>>>> 2 files changed, 29 insertions(+), 23 deletions(-) >>>>>>>> >>>>>>>> >>>>>>>> Support up to 4095 nodes in the flat addressing scheme for >>>>>>>> TIPC, by >>>>>> encoding >>>>>>>> the slot ID in the lower eight bits and the ones' complement of >>>>>>>> the >>>>>> subslot ID >>>>>>>> in bits 8 to 11 in the node identifier of the TIPC address. The >>>>>> reason for taking >>>>>>>> the ones' complement of the subslot ID is backwards compatibility >>>>>> with >>>>>>>> existing installations, so that this enhancement can be upgraded >>>>>> in-service. >>>>>>>> diff --git a/osaf/libs/core/mds/include/mds_dt.h >>>>>>>> b/osaf/libs/core/mds/include/mds_dt.h >>>>>>>> --- a/osaf/libs/core/mds/include/mds_dt.h >>>>>>>> +++ b/osaf/libs/core/mds/include/mds_dt.h >>>>>>>> @@ -237,7 +237,8 @@ bool mdtm_mailbox_mbx_cleanup(NCSCONTEXT >>>>>>>> >>>>>>>> /* >>>>>>>> * In the default flat addressing scheme, TIPC node addresses >>>>>> looks like >>>>>>>> - * 1.1.1, 1.1.2 etc. >>>>>>>> + * 1.1.1, 1.1.2 etc. The ones' complement of the subslot ID is >>>>>> shifted >>>>>>>> + 8 >>>>>>>> + * bits up and the slot ID is added in the 8 LSB. >>>>>>>> * In the non flat (old/legacy) addressing scheme TIPC >>>>>>>> addresses >>>>>> looks like >>>>>>>> * 1.1.31, 1.1.47. The slot ID is shifted 4 bits up and >>>>>>>> subslot >>>>>> ID is added >>>>>>>> * in the 4 LSB. >>>>>>>> @@ -248,13 +249,20 @@ bool mdtm_mailbox_mbx_cleanup(NCSCONTEXT >>>>>>>> >>>>>>>> #if (MDS_USE_SUBSLOT_ID == 0) >>>>>>>> #define MDS_TIPC_NODE_ID_MIN 0x01001001 >>>>>>>> -#define MDS_TIPC_NODE_ID_MAX 0x010010ff >>>>>>>> -#define MDS_NCS_NODE_ID_MIN (MDS_NCS_CHASSIS_ID|0x0000010f) >>>>>>>> -#define MDS_NCS_NODE_ID_MAX (MDS_NCS_CHASSIS_ID|0x0000ff0f) >>>>>>>> -#define m_MDS_GET_NCS_NODE_ID_FROM_TIPC_NODE_ID(node) \ >>>>>>>> - (NODE_ID)( MDS_NCS_CHASSIS_ID | (((node)&0xff)<<8) | >>>>>> (0xf)) >>>>>>>> -#define m_MDS_GET_TIPC_NODE_ID_FROM_NCS_NODE_ID(node) \ >>>>>>>> - (NODE_ID)( MDS_TIPC_COMMON_ID | (((node)&0xff00)>>8) ) >>>>>>>> +#define MDS_TIPC_NODE_ID_MAX 0x01001fff >>>>>>>> +static inline NODE_ID >>>>>>>> m_MDS_GET_NCS_NODE_ID_FROM_TIPC_NODE_ID(NODE_ID node) { >>>>>>>> + return MDS_NCS_CHASSIS_ID | ((node & 0xff) << 8) | >>>>>>>> (((node >>>>>> & >>>>>>>> +0xf00) >> 8) ^ 0xf); } static inline NODE_ID >>>>>>>> +m_MDS_GET_TIPC_NODE_ID_FROM_NCS_NODE_ID(NODE_ID node) { >>>>>>>> + return MDS_TIPC_COMMON_ID | ((node & 0xff00) >> 8) | >>>>>> (((node & >>>>>>>> +0xf) ^ 0xf) << 8); } static inline uint32_t >>>>>>>> +m_MDS_CHECK_TIPC_NODE_ID_RANGE(NODE_ID node) { >>>>>>>> + return node < MDS_TIPC_NODE_ID_MIN || node > >>>>>>>> MDS_TIPC_NODE_ID_MAX ? >>>>>>>> + NCSCC_RC_FAILURE : NCSCC_RC_SUCCESS; >>>>>>>> +} >>>>>>>> +static inline uint32_t m_MDS_CHECK_NCS_NODE_ID_RANGE(NODE_ID >>>>>>>> node) { >>>>>>>> + return >>>>>>>> +m_MDS_CHECK_TIPC_NODE_ID_RANGE(m_MDS_GET_TIPC_NODE_ID_FR >>>>>>>> OM_NCS_NODE_ID( >>>>>>>> +node)); >>>>>>>> +} >>>>>>>> #else >>>>>>>> #define MDS_TIPC_NODE_ID_MIN 0x01001001 >>>>>>>> #define MDS_TIPC_NODE_ID_MAX 0x0100110f >>>>>>>> @@ -264,10 +272,10 @@ bool mdtm_mailbox_mbx_cleanup(NCSCONTEXT >>>>>>>> (NODE_ID)( MDS_NCS_CHASSIS_ID | ((node)&0xf) | >>>>>>>> (((node)&0xff0)<<4)) #define >>>>>>>> m_MDS_GET_TIPC_NODE_ID_FROM_NCS_NODE_ID(node) \ >>>>>>>> (NODE_ID)( MDS_TIPC_COMMON_ID | >>>>>>>> (((node)&0xff00)>>4) | >>>>>>>> ((node)&0xf) ) -#endif >>>>>>>> >>>>>>>> #define m_MDS_CHECK_TIPC_NODE_ID_RANGE(node) >>>>>>>> (((((node)<MDS_TIPC_NODE_ID_MIN)||((node)>MDS_TIPC_NODE_ID_MA >>>>>>>> X))?NCSCC_RC_FAILURE:NCSCC_RC_SUCCESS)) >>>>>>>> #define m_MDS_CHECK_NCS_NODE_ID_RANGE(node) >>>>>>>> (((((node)<MDS_NCS_NODE_ID_MIN)||((node)>MDS_NCS_NODE_ID_MA >>>>>>>> X))?NCSCC_RC_FAILURE:NCSCC_RC_SUCCESS)) >>>>>>>> +#endif >>>>>>>> >>>>>>>> /* ******************************************** */ >>>>>>>> /* ******************************************** */ diff --git >>>>>>>> a/osaf/libs/core/mds/mds_c_db.c b/osaf/libs/core/mds/mds_c_db.c >>>>>>>> --- a/osaf/libs/core/mds/mds_c_db.c >>>>>>>> +++ b/osaf/libs/core/mds/mds_c_db.c >>>>>>>> @@ -37,14 +37,13 @@ void get_adest_details(MDS_DEST adest, c >>>>>>>> char *token, *saveptr; >>>>>>>> struct stat s; >>>>>>>> uint32_t process_id = 0; >>>>>>>> - NCS_PHY_SLOT_ID phy_slot; >>>>>>>> - NCS_SUB_SLOT_ID sub_slot; >>>>>>>> + SlotSubslotId slot_subslot_id; >>>>>>>> char pid_path[1024]; >>>>>>>> char *pid_name = NULL; >>>>>>>> char process_name[MDS_MAX_PROCESS_NAME_LEN]; >>>>>>>> bool remote = false; >>>>>>>> >>>>>>>> - >>>>>>>> m_NCS_GET_PHYINFO_FROM_NODE_ID(m_NCS_NODE_ID_FROM_ >>>>>>>> MDS_DEST(adest), NULL, &phy_slot, &sub_slot); >>>>>>>> + slot_subslot_id = >>>>>>>> +GetSlotSubslotIdFromNodeId(m_NCS_NODE_ID_FROM_MDS_DEST(adest) >>>>>>>> ); >>>>>>>> >>>>>>>> if (!tipc_mode_enabled) { >>>>>>>> process_id = >>>>>>>> m_MDS_GET_PROCESS_ID_FROM_ADEST(adest); >>>>>>>> @@ -111,11 +110,11 @@ void get_adest_details(MDS_DEST adest, c >>>>>>>> } >>>>>>>> >>>>>>>> if (remote == true) >>>>>>>> - snprintf(adest_details, MDS_MAX_PROCESS_NAME_LEN, >>>>>>>> "<rem_nodeid[%d]:%s>", >>>>>>>> - phy_slot, process_name); >>>>>>>> + snprintf(adest_details, MDS_MAX_PROCESS_NAME_LEN, >>>>>>>> "<rem_nodeid[%u]:%s>", >>>>>>>> + slot_subslot_id, process_name); >>>>>>>> else >>>>>>>> - snprintf(adest_details, MDS_MAX_PROCESS_NAME_LEN, >>>>>>>> "<nodeid[%d]:%s>", >>>>>>>> - phy_slot, process_name); >>>>>>>> + snprintf(adest_details, MDS_MAX_PROCESS_NAME_LEN, >>>>>>>> "<nodeid[%u]:%s>", >>>>>>>> + slot_subslot_id, process_name); >>>>>>>> >>>>>>>> m_MDS_LOG_DBG("MDS:DB: adest_details: %s ", >>>>>>>> adest_details); >>>>>>>> m_MDS_LEAVE(); >>>>>>>> @@ -129,8 +128,7 @@ void get_adest_details(MDS_DEST adest, c void >>>>>>>> get_subtn_adest_details(MDS_PWE_HDL pwe_hdl, MDS_SVC_ID svc_id, >>>>>>>> MDS_DEST adest, char* adest_details) { >>>>>>>> uint32_t process_id = 0; >>>>>>>> - NCS_PHY_SLOT_ID phy_slot; >>>>>>>> - NCS_SUB_SLOT_ID sub_slot; >>>>>>>> + SlotSubslotId slot_subslot_id; >>>>>>>> char process_name[MDS_MAX_PROCESS_NAME_LEN]; >>>>>>>> bool remote = false; >>>>>>>> MDS_SVC_INFO *svc_info = NULL; >>>>>>>> @@ -139,7 +137,7 @@ void get_subtn_adest_details(MDS_PWE_HDL >>>>>>>> char *pid_name = NULL; >>>>>>>> struct stat s; >>>>>>>> >>>>>>>> - >>>>>>>> m_NCS_GET_PHYINFO_FROM_NODE_ID(m_NCS_NODE_ID_FROM_ >>>>>>>> MDS_DEST(adest), NULL, &phy_slot, &sub_slot); >>>>>>>> + slot_subslot_id = >>>>>>>> +GetSlotSubslotIdFromNodeId(m_NCS_NODE_ID_FROM_MDS_DEST(adest) >>>>>>>> ); >>>>>>>> process_id = m_MDS_GET_PROCESS_ID_FROM_ADEST(adest); >>>>>>>> >>>>>>>> if (NCSCC_RC_SUCCESS == mds_mcm_check_intranode(adest)) { >>>>>>>> @@ -185,11 +183,11 @@ void get_subtn_adest_details(MDS_PWE_HDL >>>>>>>> } >>>>>>>> >>>>>>>> if (remote == true) >>>>>>>> - snprintf(adest_details, MDS_MAX_PROCESS_NAME_LEN, >>>>>>>> "<rem_node[%d]:%s>", >>>>>>>> - phy_slot, process_name); >>>>>>>> + snprintf(adest_details, MDS_MAX_PROCESS_NAME_LEN, >>>>>>>> "<rem_node[%u]:%s>", >>>>>>>> + slot_subslot_id, process_name); >>>>>>>> else >>>>>>>> - snprintf(adest_details, MDS_MAX_PROCESS_NAME_LEN, >>>>>>>> "<node[%d]:%s>", >>>>>>>> - phy_slot, process_name); >>>>>>>> + snprintf(adest_details, MDS_MAX_PROCESS_NAME_LEN, >>>>>>>> "<node[%u]:%s>", >>>>>>>> + slot_subslot_id, process_name); >>>>>>>> done: >>>>>>>> m_MDS_LOG_DBG("MDS:DB: adest_details: %s ", >>>>>>>> adest_details); >>>>>>>> m_MDS_LEAVE(); >>>>>>>> >>>>>>>> >>>>>> ------------------------------------------------------------------------------ >>>>>> >>>>>> >>>>>> >>>>>>>> Transform Data into Opportunity. >>>>>>>> Accelerate data analysis in your applications with Intel Data >>>>>> Analytics >>>>>>>> Acceleration Library. >>>>>>>> Click to learn more. >>>>>>>> http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140 >>>>>>>> _______________________________________________ >>>>>>>> Opensaf-devel mailing list >>>>>>>> [email protected] >>>>>>>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel >>>> ------------------------------------------------------------------------------ >>>> >>>> >>>> >>>> Transform Data into Opportunity. >>>> Accelerate data analysis in your applications with >>>> Intel Data Analytics Acceleration Library. >>>> Click to learn more. >>>> http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140 >>>> _______________________________________________ >>>> Opensaf-devel mailing list >>>> [email protected] >>>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel >>>> >>> >>> >>> ------------------------------------------------------------------------------ >>> >>> >>> Transform Data into Opportunity. >>> Accelerate data analysis in your applications with >>> Intel Data Analytics Acceleration Library. >>> Click to learn more. >>> http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140 >>> >>> >>> _______________________________________________ >>> Opensaf-devel mailing list >>> [email protected] >>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel >> ------------------------------------------------------------------------------ >> >> >> Transform Data into Opportunity. >> Accelerate data analysis in your applications with >> Intel Data Analytics Acceleration Library. >> Click to learn more. >> http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140 >> _______________________________________________ >> Opensaf-devel mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/opensaf-devel >> > ------------------------------------------------------------------------------ Transform Data into Opportunity. Accelerate data analysis in your applications with Intel Data Analytics Acceleration Library. Click to learn more. http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140 _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
