[ofw] RE: Patch for PR 1029 (BSOD when ib_srpt unloaded)

Leonid Keller leonid at mellanox.co.il
Sun Jun 1 07:22:22 PDT 2008


Done in rev.1223, thank you.


________________________________

	From: Eleanor Witiak [mailto:eleanor.witiak at qlogic.com] 
	Sent: Wednesday, May 28, 2008 5:01 PM
	To: ofw at lists.openfabrics.org; Leonid Keller
	Subject: Patch for PR 1029 (BSOD when ib_srpt unloaded)
	
	

	Details of the PR is found in:
https://bugs.openfabrics.org/show_bug.cgi?id=1029

	 

	Leonid:  Please review and if everyone is okay with it, please
commit to svn.  Thanks!

	 

	The patch is as follows:

	 

	Index: srp_connection.c

	
===================================================================

	--- srp_connection.c       (revision 1198)

	+++ srp_connection.c    (working copy)

	@@ -288,24 +288,25 @@

	 {

	            srp_session_t   *p_srp_session = (srp_session_t*
__ptr64)p_cm_dreq_rec->qp_context;

	            srp_hba_t       *p_hba = p_srp_session->p_hba;

	-           ib_cm_drep_t    cm_drep;

	-           ib_api_status_t status;

	 

	            SRP_ENTER( SRP_DBG_PNP );

	-

	+                                  

	            cl_obj_lock( &p_srp_session->obj );

	-           p_srp_session->connection.state =
SRP_CONNECT_FAILURE;

	-           cl_obj_unlock( &p_srp_session->obj );

	-

	-           cm_drep.p_drep_pdata = NULL;

	-           cm_drep.drep_length = 0;

	-

	-           status = p_hba->ifc.cm_drep(
p_cm_dreq_rec->h_cm_dreq, &cm_drep );

	-           if ( status != IB_SUCCESS )

	+          if (p_srp_session->connection.state == SRP_CONNECTED)

	            {

	-                       SRP_PRINT( TRACE_LEVEL_ERROR,
SRP_DBG_ERROR,

	-                                   ("Cannot respond to target
disconnect request. Status = %d\n", status) );

	+                      SRP_PRINT( TRACE_LEVEL_VERBOSE,
SRP_DBG_PNP,

	+                                  ("**** SRP_CONNECTED =>
SRP_CONNECT_FAILURE. \n") );

	+                      p_srp_session->connection.state =
SRP_CONNECT_FAILURE;

	+                      cl_obj_unlock( &p_srp_session->obj );

	            }

	+          else  // since the connection is no longer there,
just exit

	+          {

	+                      cl_obj_unlock( &p_srp_session->obj );

	+                      SRP_PRINT( TRACE_LEVEL_VERBOSE,
SRP_DBG_PNP,

	+                                  ("**** NOT SRP_CONNECTED
*****. connection state = %d\n", p_srp_session->connection.state) );

	+                      SRP_EXIT( SRP_DBG_PNP );

	+                      return;  

	+          }

	 

	            SRP_PRINT( TRACE_LEVEL_WARNING, SRP_DBG_PNP,

	                        ("Target has issued a disconnect request
for Session %d ref_cnt = %d.\n",

	Index: srp_session.c

	
===================================================================

	--- srp_session.c            (revision 1198)

	+++ srp_session.c         (working copy)

	@@ -57,8 +57,15 @@

	            SRP_ENTER( SRP_DBG_SESSION );

	 

	            p_srp_session = PARENT_STRUCT( p_obj, srp_session_t,
obj );

	-

	+          

	+          cl_obj_lock( &p_srp_session->obj );

	+          if( p_srp_session->connection.state !=
SRP_CONNECT_FAILURE )

	+          {

	+                      cl_obj_unlock( &p_srp_session->obj );

	+                      return;

	+          }

	            p_srp_session->connection.state =
SRP_CONNECTION_CLOSING;

	+          cl_obj_unlock( &p_srp_session->obj );

	 

	            SRP_PRINT( TRACE_LEVEL_VERBOSE, SRP_DBG_DEBUG,

	                        ("Session Object ref_cnt = %d\n",
p_srp_session->obj.ref_cnt) );

	 

	________________________

	Eleanor Witiak

	QLogic Corporation

	Host Software Group

	780 Fifth Avenue, Suite 140

	King of Prussia, PA 19406

	Direct:      610-233-4831

	Fax:         610-233-4777

	eleanor.witiak at qlogic.com

	       

	 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20080601/e6bd22cc/attachment.html>


More information about the ofw mailing list