<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.6000.16825" name=GENERATOR></HEAD>
<BODY>
<DIV dir=ltr align=left><SPAN class=965290316-01062009><FONT face=Arial 
color=#0000ff size=2>Hello Leo,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=965290316-01062009><FONT face=Arial 
color=#0000ff size=2>  At what svn revision did you 1st start seeing the 
refcnt leakage? </FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=965290316-01062009><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=965290316-01062009><FONT face=Arial 
color=#0000ff size=2>Specifically @ svn.2221 (mthca.sys) I do not see refcnt 
leakage ASSERTS/problems in HCA disable or system shutdown?</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=965290316-01062009><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=965290316-01062009><FONT face=Arial 
color=#0000ff size=2>Any ideas as to what has changed?</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=965290316-01062009><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=965290316-01062009><FONT face=Arial 
color=#0000ff size=2>thanks,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=965290316-01062009><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=965290316-01062009><FONT face=Arial 
color=#0000ff size=2>stan.</FONT></SPAN></DIV><BR>
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> ofw-bounces@lists.openfabrics.org 
[mailto:ofw-bounces@lists.openfabrics.org] <B>On Behalf Of </B>Leonid 
Keller<BR><B>Sent:</B> Monday, June 01, 2009 8:41 AM<BR><B>To:</B> 
ofw@lists.openfabrics.org<BR><B>Subject:</B> [ofw][patches][IBAL] work around 
for reference count leakage bugs<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV><FONT face=Arial size=2>IBAL still has bugs, which cause reference count 
leakage, which stops the cascading destroying resources of IBAL.<BR>It 
causes  in turn a freeze of IBBUS on HCA disable or system power 
down.<BR>On checked builds IBAL forces destroying of the objects after some 
timeout.<BR>On free version it waits endlessly.<BR>This patch makes the behavior 
of free version to be <SPAN class=679483715-01062009>the same </SPAN>in 
checked version while sending a message to System Event Log.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Index: 
V:/svn/winib/trunk/core/al/al_common.c<BR>===================================================================<BR>--- 
V:/svn/winib/trunk/core/al/al_common.c (revision 4403)<BR>+++ 
V:/svn/winib/trunk/core/al/al_common.c (revision 4404)<BR>@@ -35,6 +35,7 
@@<BR> #include "al_ci_ca.h"<BR> #include 
"al_common.h"<BR> #include "al_debug.h"<BR>+#include 
"al_ca.h"<BR> <BR> #if defined(EVENT_TRACING)<BR> #ifdef 
offsetof<BR>@@ -46,6 +47,7 @@<BR> #include "al_mgr.h"<BR> #include 
<complib/cl_math.h><BR> #include "ib_common.h"<BR>+#include 
"bus_ev_log.h"<BR> <BR> <BR> <BR>@@ -498,7 +500,6 
@@<BR> <BR>  if( deref_al_obj( p_obj ) 
)<BR>  {<BR>- #ifdef 
_DEBUG_<BR>   uint32_t  wait_us;<BR>   /*<BR>    
* Wait for all other references to go away.  We wait as long as the<BR>@@ 
-529,13 +530,11 @@<BR>      &p_obj->event, 
AL_MAX_TIMEOUT_US, AL_WAIT_ALERTABLE );<BR>    } while( 
cl_status == CL_NOT_DONE 
);<BR>   }<BR>- #else<BR>-  do<BR>-  {<BR>-   cl_status 
= cl_event_wait_on(<BR>-    &p_obj->event, 
EVENT_NO_TIMEOUT, AL_WAIT_ALERTABLE );<BR>-  } while( cl_status == 
CL_NOT_DONE );<BR>- #endif<BR>+  if ( p_obj->p_ci_ca 
&& p_obj->p_ci_ca )<BR>+   CL_PRINT_TO_EVENT_LOG( 
p_obj->p_ci_ca->h_ca->p_fdo, 
EVENT_IBBUS_ANY_ERROR,<BR>+    ("IBAL stuck: AL object %s, 
ref_cnt: %d. Forcing object 
destruction.\n",<BR>+    ib_get_obj_type( p_obj ), 
p_obj->ref_cnt));<BR>+<BR>   CL_ASSERT( cl_status == 
CL_SUCCESS );<BR>   if( cl_status != CL_SUCCESS 
)<BR>   {<BR></FONT></DIV></BODY></HTML>