[ofw] [PATCH] mad: deregister MR earlier in destroy path

Sean Hefty sean.hefty at intel.com
Mon May 11 16:34:51 PDT 2009


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 <sean.hefty at intel.com>
---
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 )
 	{




More information about the ofw mailing list