diff mbox

[1/2,v3] opensm SA DB dump/restore: load SA DB only once

Message ID 4B1BC268.5030605@dev.mellanox.co.il (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Yevgeny Kliteynik Dec. 6, 2009, 2:40 p.m. UTC
None
diff mbox

Patch

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);