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 <[email protected]>
> ---
>  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
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to