Load SA DB only once, at first master heavy sweep. If loading succeeded, do whatever 'no_clients_rereg' option says. If loading failed at some point, turn off the 'no_clients_rereg' option (turn on re-registartion requests).
Signed-off-by: Yevgeny Kliteynik <[email protected]> --- Changes since V2: - No 'sa_db_load_once' option - Combine 'no_clients_rereg' option meaning with loading SA DB result opensm/opensm/osm_sa.c | 19 +++++++++++++++++-- 1 files changed, 17 insertions(+), 2 deletions(-) diff --git a/opensm/opensm/osm_sa.c b/opensm/opensm/osm_sa.c index bf794f0..4cfd18c 100644 --- a/opensm/opensm/osm_sa.c +++ b/opensm/opensm/osm_sa.c @@ -908,6 +908,12 @@ int osm_sa_db_file_load(osm_opensm_t * p_osm) return 0; } + if (!p_osm->subn.first_time_master_sweep) { + OSM_LOG(&p_osm->log, OSM_LOG_VERBOSE, + "Not first sweep - skip SA DB restore\n"); + return 0; + } + file = fopen(file_name, "r"); if (!file) { OSM_LOG(&p_osm->log, OSM_LOG_ERROR | OSM_LOG_SYS, "ERR 4C02: " @@ -916,6 +922,10 @@ int osm_sa_db_file_load(osm_opensm_t * p_osm) return -1; } + OSM_LOG(&p_osm->log, OSM_LOG_VERBOSE, + "Restoring SA DB from file \'%s\'\n", + file_name); + lineno = 0; while (fgets(line, sizeof(line) - 1, file) != NULL) { @@ -1092,8 +1102,13 @@ int osm_sa_db_file_load(osm_opensm_t * p_osm) } } - if (!rereg_clients) - p_osm->subn.opt.no_clients_rereg = TRUE; + /* + * If loading succeeded, do whatever 'no_clients_rereg' says. + * If loading failed at some point, turn off the 'no_clients_rereg' + * option (turn on re-registartion requests). + */ + if (rereg_clients) + p_osm->subn.opt.no_clients_rereg = FALSE; _error: fclose(file); -- 1.5.1.4 -- 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
