opensm: toggle sweeping V3
Add option to toggle sweeping from opensm console.
Signed-off-by Arthur Kepner <akepner-sJ/[email protected]>
---
include/opensm/osm_subnet.h | 6 ++++++ opensm/osm_console.c | 32 ++++++++++++++++++++++++++++++++ opensm/osm_state_mgr.c | 8 +++++++- opensm/osm_subnet.c | 1 + 4 files changed, 46 insertions(+), 1 deletion(-)
opensm/include/opensm/osm_subnet.h +6 -0
@@ -532,6 +532,7 @@ typedef struct osm_subn {boolean_t in_sweep_hop_0;boolean_t first_time_master_sweep;boolean_t coming_out_of_standby; +boolean_t sweeping_enabled;unsigned need_update;cl_fmap_t mgrp_mgid_tbl;void *mboxes[IB_LID_MCAST_END_HO -IB_LID_MCAST_START_HO +1 ];
@@ -651,6 +652,11 @@ typedef struct osm_subn {* The flag is set true if the SM state was standby and now * changed to MASTER it is reset at the end of the sweep. * +* sweeping_enabled +* FALSE - sweeping is administratively disabled, all +* sweeping is inhibited, TRUE - sweeping is done +* normally +* * need_update * This flag should be on during first non-master heavy * (including pre-master discovery stage)
opensm/opensm/osm_console.c +32 -0
@@ -150,6 +150,16 @@ static void help_reroute(FILE * out, int detail) } } +static void help_sweep (FILE * out,int detail) +{ +fprintf (out,"sweep [on|off]\n" ); +if (detail) { +fprintf (out,"enable or disable sweeping\n" ); +fprintf (out," [on] sweep normally\n" ); +fprintf (out," [off] inhibit all sweeping\n" ); + } +} +static void help_status (FILE * out,int detail) {fprintf (out,"status [loop]\n" );
@@ -427,11 +437,15 @@ static void print_status(osm_opensm_t * p_osm, FILE * out) p_osm->stats.sa_mads_ignored); fprintf(out, "\n Subnet flags\n" " ------------\n" + " Sweeping enabled : %d\n" + " Sweep interval (seconds) : %d\n" " Ignore existing lfts : %d\n" " Subnet Init errors : %d\n" " In sweep hop 0 : %d\n" " First time master sweep : %d\n" " Coming out of standby : %d\n", + p_osm->subn.sweeping_enabled, + p_osm->subn.opt.sweep_interval, p_osm->subn.ignore_existing_lfts, p_osm->subn.subnet_initialization_error, p_osm->subn.in_sweep_hop_0,
@@ -495,6 +509,23 @@ static void reroute_parse(char **p_last, osm_opensm_t * p_osm, FILE * out)osm_opensm_sweep (p_osm); } +static void sweep_parse (char **p_last,osm_opensm_t * p_osm,FILE * out) +{ +char *p_cmd; + + p_cmd =next_token (p_last); +if (!p_cmd || + (strcmp (p_cmd,"on" ) !=0 &&strcmp (p_cmd,"off" ) !=0 )) { +fprintf (out,"Invalid sweep command\n" ); +help_sweep (out,1 ); + }else { +if (strcmp (p_cmd,"on" ) ==0 ) + p_osm->subn.sweeping_enabled = TRUE; +else + p_osm->subn.sweeping_enabled = FALSE; + } +} +static void logflush_parse (char **p_last,osm_opensm_t * p_osm,FILE * out) {fflush (p_osm->log.out_port);
@@ -1332,6 +1363,7 @@ static const struct command console_cmds[] = { {"priority", &help_priority, &priority_parse}, {"resweep", &help_resweep, &resweep_parse}, {"reroute", &help_reroute, &reroute_parse}, + {"sweep", &help_sweep, &sweep_parse}, {"status", &help_status, &status_parse}, {"logflush", &help_logflush, &logflush_parse}, {"querylid", &help_querylid, &querylid_parse},
opensm/opensm/osm_state_mgr.c +7 -1
@@ -1415,7 +1415,13 @@ void osm_state_mgr_process(IN osm_sm_t * sm, IN osm_signal_t signal)switch (signal) {case OSM_SIGNAL_SWEEP : -do_sweep (sm); +if (!sm->p_subn->sweeping_enabled) { +OSM_LOG (sm->p_log,OSM_LOG_DEBUG ,"sweeping disabled - " +"ignoring signal %s in state %s\n" , +osm_get_sm_signal_str (signal), +osm_get_sm_mgr_state_str (sm->p_subn->sm_state)); + }else +do_sweep (sm);break ;case OSM_SIGNAL_IDLE_TIME_PROCESS_REQUEST :do_process_mgrp_queue (sm);
opensm/opensm/osm_subnet.c +1 -0
@@ -531,6 +531,7 @@ ib_api_status_t osm_subn_init(IN osm_subn_t * p_subn, IN osm_opensm_t * p_osm,/* we assume master by default - so we only need to set it true if STANDBY */ p_subn->coming_out_of_standby = FALSE; + p_subn->sweeping_enabled = TRUE;return IB_SUCCESS ; }
--
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
A message that is not in the archive (sent off-list or not yet received): 20100525165330.GO2678-sJ/[email protected]
Sasha Khapyorsky
AppliedQuoted 4 lines · Arthur Kepner
Add option to toggle sweeping from opensm console.
Signed-off-by Arthur Kepner <akepner-sJ/[email protected]>
Applied. Thanks.
Sasha
--
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