[ofa-general] [PATCH 2/4 v2] opensm/osm_state_mgr.c rescan subnet configuration after SIGHUP

Sasha Khapyorsky sashak at voltaire.com
Wed Feb 4 16:03:23 PST 2009


Hi Eli,

On 16:11 Tue 03 Feb     , Eli Dorfman (Voltaire) wrote:
>  rescan configuration as first step on every heavy sweep
>  this is a must in case of priority change (increase) for standby SM
> 
> Signed-off-by: Eli Dorfman <elid at voltaire.com>
> ---
>  opensm/opensm/osm_state_mgr.c |   11 ++++++-----
>  1 files changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/opensm/opensm/osm_state_mgr.c b/opensm/opensm/osm_state_mgr.c
> index fc7ceb9..622867b 100644
> --- a/opensm/opensm/osm_state_mgr.c
> +++ b/opensm/opensm/osm_state_mgr.c
> @@ -1042,6 +1042,12 @@ static void do_sweep(osm_sm_t * sm)
>  	ib_api_status_t status;
>  	osm_remote_sm_t *p_remote_sm;
>  
> +	if (sm->p_subn->force_heavy_sweep && 
> +	    osm_subn_rescan_conf_files(sm->p_subn) < 0) {
> +		OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 331A: "
> +			"osm_subn_rescan_conf_file failed\n");
> +	}
> +
>  	if (sm->p_subn->sm_state != IB_SMINFO_STATE_MASTER &&
>  	    sm->p_subn->sm_state != IB_SMINFO_STATE_DISCOVERING)
>  		return;
> @@ -1131,11 +1137,6 @@ _repeat_discovery:
>  	sm->p_subn->force_reroute = FALSE;
>  	sm->p_subn->subnet_initialization_error = FALSE;
>  
> -	/* rescan configuration updates */
> -	if (osm_subn_rescan_conf_files(sm->p_subn) < 0)
> -		OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 331A: "
> -			"osm_subn_rescan_conf_file failed\n");
> -
>  	if (sm->p_subn->sm_state != IB_SMINFO_STATE_MASTER)
>  		sm->p_subn->need_update = 1;

'force_heavy_sweep' flag can be raised during light sweep too. In this
case you will miss config rescanning before incoming heavy sweep. I
guess the patch should similar to (not tested):


diff --git a/opensm/opensm/osm_state_mgr.c b/opensm/opensm/osm_state_mgr.c
index aecfac6..f5d3837 100644
--- a/opensm/opensm/osm_state_mgr.c
+++ b/opensm/opensm/osm_state_mgr.c
@@ -1041,11 +1041,14 @@ static void do_sweep(osm_sm_t * sm)
 {
 	ib_api_status_t status;
 	osm_remote_AM_t *p_remote_sm;
+	unsigned config_parsed = 0;
 
-	if (sm->p_subn->force_heavy_sweep &&
-	    osm_subn_rescan_conf_files(sm->p_subn) < 0) {
-		OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 331A: "
-			"osm_subn_rescan_conf_file failed\n");
+	if (sm->p_subn->force_heavy_sweep) {
+		if (osm_subn_rescan_conf_files(sm->p_subn) < 0)
+			OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 331A: "
+				"osm_subn_rescan_conf_file failed\n");
+		else
+			config_parsed = 1;
 	}
 
 	if (sm->p_subn->sm_state != IB_SMINFO_STATE_MASTER &&
@@ -1137,6 +1140,11 @@ _repeat_discovery:
 	sm->p_subn->force_reroute = FALSE;
 	sm->p_subn->subnet_initialization_error = FALSE;
 
+	/* rescan configuration updates */
+	if (!config_parsed && osm_subn_rescan_conf_files(sm->p_subn) < 0)
+		OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 331A: "
+			"osm_subn_rescan_conf_file failed\n");
+
 	if (sm->p_subn->sm_state != IB_SMINFO_STATE_MASTER)
 		sm->p_subn->need_update = 1;

Sasha



More information about the general mailing list