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
