osm_lid_mgr.c: fix duplicate LID assignment after SM port down
PATCH 1/1 osm_lid_mgr.c: fix duplicate LID assignment after SM port down
From: Alex Netes <alexne-VPRAkNaXOzVWk0Htik3J/[email protected]>
We must discard previous guid2lid db if this is the first master sweep and reassign_lids option is TRUE.
If we came out of standby and honor_guid2lid_file option is TRUE, we must restore guid2lid db. Otherwise if honor_guid2lid_file option is FALSE we must discard previous guid2lid db.
--- opensm/osm_lid_mgr.c | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-)
opensm/osm_lid_mgr.c +11 -5
@@ -302,11 +302,17 @@ static int lid_mgr_init_sweep(IN osm_lid_mgr_t * p_mgr) lmc_mask = ~((1 << p_mgr->p_subn->opt.lmc) -1 ); -/* if we came out of standby we need to discard any previous guid2lid -info we might have. -Do this only if the honor_guid2lid_file option is FALSE. If not, then -need to honor this file. */ -if (p_mgr->p_subn->coming_out_of_standby == TRUE) { +/* We must discard previous guid2lid db if this is the first master +* sweep and reassign_lids option is TRUE. +* If we came out of standby and honor_guid2lid_file option is TRUE, we +* must restore guid2lid db. Otherwise if honor_guid2lid_file option is +* FALSE we must discard previous guid2lid db. +*/ +if (p_mgr->p_subn->first_time_master_sweep == TRUE && + p_mgr->p_subn->opt.reassign_lids == TRUE) { +osm_db_clear (p_mgr->p_g2l); +memset (p_mgr->used_lids,0 ,sizeof (p_mgr->used_lids)); + }else if (p_mgr->p_subn->coming_out_of_standby == TRUE) {osm_db_clear (p_mgr->p_g2l);memset (p_mgr->used_lids,0 ,sizeof (p_mgr->used_lids));if (p_mgr->p_subn->opt.honor_guid2lid_file == FALSE)
Signature · 6 lines
1.7.8.2 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html