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
