[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