When restarting the stack, the MAD pool tries to deregister its memory
during the cleanup phase.  This results in an error because of an
invalid h_mr handle.  Fix the error by deregistering the memory during
the destroying callback.

Signed-off-by: Sean Hefty <[email protected]>
---
This moves the memory deregistration call from the cleanup thread to whatever
thread is calling destroy.  I didn't see any issues with this during my testing.

Index: al_mad_pool.c
===================================================================
--- al_mad_pool.c       (revision 2100)
+++ al_mad_pool.c       (working copy)
@@ -460,6 +460,8 @@
 
        /* Remove this pool_key from the AL instance. */
        al_remove_key( p_pool_key );
+       if( p_pool_key->h_mr )
+               ib_dereg_mr( p_pool_key->h_mr );
 
        p_pool_key->lkey = 0;
 }
@@ -483,9 +485,6 @@
 
        CL_ASSERT( !p_pool_key->mad_cnt );
 
-       if( p_pool_key->h_mr )
-               ib_dereg_mr( p_pool_key->h_mr );
-
        /* Search for any outstanding MADs associated with the given pool key. 
*/
        if( p_pool_key->mad_cnt )
        {

_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to