[ofa-general] [PATCH 2/3] opensm/perfmgr: break perfmgr discovery if osm_exit_flag is on

Sasha Khapyorsky sashak at voltaire.com
Sun Jan 27 16:12:48 PST 2008


Function wait_for_pending_transaction() will report interruption status
(by returning osm_exit_flag value). So perfmgr discovery process can be
aborted.

Signed-off-by: Sasha Khapyorsky <sashak at voltaire.com>
---
 opensm/opensm/osm_perfmgr.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/opensm/opensm/osm_perfmgr.c b/opensm/opensm/osm_perfmgr.c
index 091b46a..1d92b3b 100644
--- a/opensm/opensm/osm_perfmgr.c
+++ b/opensm/opensm/osm_perfmgr.c
@@ -723,7 +723,7 @@ static int wait_for_pending_transactions(osm_stats_t * stats)
 	while (stats->qp0_mads_outstanding && !osm_exit_flag)
 		pthread_cond_wait(&stats->cond, &stats->mutex);
 	pthread_mutex_unlock(&stats->mutex);
-	return 0;
+	return osm_exit_flag;
 }
 
 static void reset_node_count(cl_map_item_t * const p_map_item, void *cxt)
@@ -762,7 +762,8 @@ static int perfmgr_discovery(osm_opensm_t * osm)
 	if (ret)
 		goto _exit;
 
-	wait_for_pending_transactions(&osm->stats);
+	if (wait_for_pending_transactions(&osm->stats))
+		goto _exit;
 
 	if (is_sm_port_down(&osm->sm)) {
 		osm_log(&osm->log, OSM_LOG_VERBOSE, "SM port is down\n");
@@ -775,7 +776,8 @@ static int perfmgr_discovery(osm_opensm_t * osm)
 	if (ret)
 		goto _exit;
 
-	wait_for_pending_transactions(&osm->stats);
+	if (wait_for_pending_transactions(&osm->stats))
+		goto _exit;
 
       _drop:
 	osm_drop_mgr_process(&osm->sm.drop_mgr);
-- 
1.5.4.rc5




More information about the general mailing list