[openib-general] [PATCH] osm: state manager ignores some outstanding transaction

Eitan Zahavi eitan at mellanox.co.il
Mon Dec 18 13:43:39 PST 2006


Hi Hal,

This is a resend as I did not see a bounce of the list of the previous 
posting I did using git-send-email (probably due to a miss use).

The following patch fixes bugs in the state manager:
Both in light sweep and pkey assignment states the state manager could ignore
outstanding SMPs (reported back by the managers) and continue to next stage.
When these SMPs do complete it causes failures of further steps which receives 
the NO_PENDING_TRANSACTIONS signal when it is not expected. 

Signed-off-by:  Eitan Zahavi <eitan at mellanox.co.il>
---

 osm/opensm/osm_state_mgr.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/osm/opensm/osm_state_mgr.c b/osm/opensm/osm_state_mgr.c
index 9eac038..94cc095 100644
--- a/osm/opensm/osm_state_mgr.c
+++ b/osm/opensm/osm_state_mgr.c
@@ -1853,6 +1853,7 @@ osm_state_mgr_process(
 {
    ib_api_status_t status;
    osm_remote_sm_t *p_remote_sm;
+   osm_signal_t tmp_signal;
 
    CL_ASSERT( p_mgr );
 
@@ -2075,11 +2076,10 @@ osm_state_mgr_process(
          case OSM_SIGNAL_CHANGE_DETECTED:
             /*
              * Nothing to do here.  One subnet change typcially
-             * begets another....
+             * begets another.... But needs to wait for all transactions
              */
             signal = OSM_SIGNAL_NONE;
             break;
-
          case OSM_SIGNAL_NO_PENDING_TRANSACTIONS:
             /*
              * A change was detected on the subnet.
@@ -2219,7 +2219,10 @@ osm_state_mgr_process(
             signal = osm_pkey_mgr_process( p_mgr->p_subn->p_osm );
 
             /* the returned signal is always DONE */
-            signal = osm_qos_setup(p_mgr->p_subn->p_osm);
+            tmp_signal = osm_qos_setup(p_mgr->p_subn->p_osm);
+
+            if (tmp_signal == OSM_SIGNAL_DONE_PENDING)
+               signal = OSM_SIGNAL_DONE_PENDING;
 
             /* try to restore SA DB (this should be before lid_mgr
                because we may want to disable clients reregistration
-- 
1.4.4.1.GIT






More information about the general mailing list