Hi Yevgeny, On 13:00 Wed 30 Jun , Yevgeny Kliteynik wrote: > Adding new events that allow event plug-in to see > when SM starts/finishes heavy sweep and routing > configuration, when it updates dump files, when it > is no longer master, when SM port is down, and when > SA DB is actually dumped at the end of light sweep: > > OSM_EVENT_ID_HEAVY_SWEEP_START > OSM_EVENT_ID_HEAVY_SWEEP_DONE > OSM_EVENT_ID_UCAST_ROUTING_DONE > OSM_EVENT_ID_STATE_CHANGE > OSM_EVENT_ID_SA_DB_DUMPED > > Signed-off-by: Yevgeny Kliteynik <[email protected]>
I'm applying this, Thanks. However I would strongly suggest few improvements - see below. > --- > > Changes since v5: > - Added OSM_EVENT_ID_HEAVY_SWEEP_START event. > > Changes since v4: > - OSM_EVENT_ID_SA_DB_DUMPED was still reported during > heavy sweep - removed. > > Changes since v3: > - OSM_EVENT_ID_ENTERING_STANDBY and OSM_EVENT_ID_SM_PORT_DOWN > replaced by OSM_EVENT_STATE_CHANGE > - OSM_EVENT_ID_SA_DB_DUMPED is not reported during > heavy sweep, but only if SA DB was actually dumped > at the end of light sweep > - fixed bug with OSM_EVENT_ID_MAX > > Signed-off-by: Yevgeny Kliteynik <[email protected]> > --- > opensm/include/opensm/osm_event_plugin.h | 5 +++++ > opensm/opensm/osm_state_mgr.c | 20 ++++++++++++++++++-- > opensm/osmeventplugin/src/osmeventplugin.c | 15 +++++++++++++++ > 3 files changed, 38 insertions(+), 2 deletions(-) > > diff --git a/opensm/include/opensm/osm_event_plugin.h > b/opensm/include/opensm/osm_event_plugin.h > index 33d1920..6a99ed9 100644 > --- a/opensm/include/opensm/osm_event_plugin.h > +++ b/opensm/include/opensm/osm_event_plugin.h > @@ -72,6 +72,11 @@ typedef enum { > OSM_EVENT_ID_PORT_SELECT, > OSM_EVENT_ID_TRAP, > OSM_EVENT_ID_SUBNET_UP, > + OSM_EVENT_ID_HEAVY_SWEEP_START, > + OSM_EVENT_ID_HEAVY_SWEEP_DONE, I see that this one is used to indicate a discovery sweep phase completion. Would it be better to rename this as OSM_EVENT_ID_DISCOVERY_DONE? > + OSM_EVENT_ID_UCAST_ROUTING_DONE, > + OSM_EVENT_ID_STATE_CHANGE, > + OSM_EVENT_ID_SA_DB_DUMPED, > OSM_EVENT_ID_MAX > } osm_epi_event_id_t; > > diff --git a/opensm/opensm/osm_state_mgr.c b/opensm/opensm/osm_state_mgr.c > index 81c8f54..e7bff46 100644 > --- a/opensm/opensm/osm_state_mgr.c > +++ b/opensm/opensm/osm_state_mgr.c > @@ -1107,8 +1107,10 @@ static void do_sweep(osm_sm_t * sm) > if (wait_for_pending_transactions(&sm->p_subn->p_osm->stats)) > return; > if (!sm->p_subn->force_heavy_sweep) { > - if (sm->p_subn->opt.sa_db_dump) > - osm_sa_db_file_dump(sm->p_subn->p_osm); > + if (sm->p_subn->opt.sa_db_dump && > + !osm_sa_db_file_dump(sm->p_subn->p_osm)) > + osm_opensm_report_event(sm->p_subn->p_osm, > + OSM_EVENT_ID_SA_DB_DUMPED, NULL); > OSM_LOG_MSG_BOX(sm->p_log, OSM_LOG_VERBOSE, > "LIGHT SWEEP COMPLETE"); > return; > @@ -1151,10 +1153,15 @@ static void do_sweep(osm_sm_t * sm) > if (!sm->p_subn->subnet_initialization_error) { > OSM_LOG_MSG_BOX(sm->p_log, OSM_LOG_VERBOSE, > "REROUTE COMPLETE"); > + osm_opensm_report_event(sm->p_subn->p_osm, > + OSM_EVENT_ID_UCAST_ROUTING_DONE, NULL); > return; > } > } > > + osm_opensm_report_event(sm->p_subn->p_osm, > + OSM_EVENT_ID_HEAVY_SWEEP_START, NULL); > + > /* go to heavy sweep */ > repeat_discovery: > > @@ -1185,6 +1192,8 @@ repeat_discovery: > > /* Move to DISCOVERING state */ > osm_sm_state_mgr_process(sm, OSM_SM_SIGNAL_DISCOVER); > + osm_opensm_report_event(sm->p_subn->p_osm, > + OSM_EVENT_ID_STATE_CHANGE, NULL); I think, that if we are introducing "SM state change" event then this should report any state change and not only "going to stand-by". I would prefer to see this report call inside osm_sm_state_mgr_process(). > return; > } > > @@ -1205,6 +1214,8 @@ repeat_discovery: > "ENTERING STANDBY STATE"); > /* notify master SM about us */ > osm_send_trap144(sm, 0); > + osm_opensm_report_event(sm->p_subn->p_osm, > + OSM_EVENT_ID_STATE_CHANGE, NULL); Ditto. 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
