|
From: <vl...@us...> - 2006-11-03 17:41:30
|
Revision: 27
http://svn.sourceforge.net/scst/?rev=27&view=rev
Author: vlnb
Date: 2006-11-03 09:41:16 -0800 (Fri, 03 Nov 2006)
Log Message:
-----------
- Fixed double locking regression, introduced rev20
- Small docs update
Revision Links:
--------------
http://svn.sourceforge.net/scst/?rev=20&view=rev
Modified Paths:
--------------
trunk/qla2x00t/qla2x00-target/ChangeLog
trunk/qla2x00t/qla2x00-target/README
trunk/qla2x00t/qla2x00-target/ToDo
trunk/qla2x00t/qla2x00-target/qla2x00t.c
Modified: trunk/qla2x00t/qla2x00-target/ChangeLog
===================================================================
--- trunk/qla2x00t/qla2x00-target/ChangeLog 2006-11-02 12:10:53 UTC (rev 26)
+++ trunk/qla2x00t/qla2x00-target/ChangeLog 2006-11-03 17:41:16 UTC (rev 27)
@@ -2,6 +2,8 @@
-----------------------------------------------------
- Ported to 2.6.17.x and 2.6.18.
+
+ - Problem with not found WWN on the first login attempt fixed.
- Updated for the latest SCST interfaces changes.
Modified: trunk/qla2x00t/qla2x00-target/README
===================================================================
--- trunk/qla2x00t/qla2x00-target/README 2006-11-02 12:10:53 UTC (rev 26)
+++ trunk/qla2x00t/qla2x00-target/README 2006-11-03 17:41:16 UTC (rev 27)
@@ -24,14 +24,6 @@
initiator driver was taken from kernel version 2.6.17.8, but it should
also work on other versions, including 2.6.18.x and 2.6.16.x.
-NOTE: WWN-based authentification on 2200 cards doesn't always work from
----- the first "connect", but works on all subsequent attempts.
- On this error message "Unable to find wwn login for loop
- id XX, using loop id instead" is logged. So, just try again, eg
- unload/load FC card driver on the initiator host. This is the
- current limitation. Everyone who fix it or found a usable
- workaround is welcome.
-
See also "ToDo" file for list of known issues and unimplemented
features.
@@ -74,9 +66,8 @@
in/out in Makefile:
- FC_SCST_WWN_AUTH - turns on using remote initiator's WWN as
- authentification name for scst_register_session_ex(). See note above
- about limitations of this mode. If it is off, LOOP ID used instead of
- WWN.
+ authentification name for scst_register_session_ex(). If it is off,
+ LOOP ID used instead of WWN.
- DEBUG_TGT - turns on some debugging code, including some logging. Makes
the driver considerably bigger and slower, producing large amount of
Modified: trunk/qla2x00t/qla2x00-target/ToDo
===================================================================
--- trunk/qla2x00t/qla2x00-target/ToDo 2006-11-02 12:10:53 UTC (rev 26)
+++ trunk/qla2x00t/qla2x00-target/ToDo 2006-11-03 17:41:16 UTC (rev 27)
@@ -17,13 +17,11 @@
- SNS support.
- - Support for sense with length > 26 (is it possible at all?)
+ - Support for sense with length > 26 (is it possible?)
- - Queue types (simple, ordered, etc.) support (needs appropriate support
- from SCST and Linux kernel)
-
- On 2300 if on a tape with block size 0 we write block with size X
and then read it with bs <X the tape skips all blocks with size X
until the next correct block or filemark found, instead of returning
ILI with negative counter. Looks like the initiator retries the
- command quetly. 2200 works correctly.
+ command quetly. 2200 works correctly. With the latest firmware that
+ might be fixed.
Modified: trunk/qla2x00t/qla2x00-target/qla2x00t.c
===================================================================
--- trunk/qla2x00t/qla2x00-target/qla2x00t.c 2006-11-02 12:10:53 UTC (rev 26)
+++ trunk/qla2x00t/qla2x00-target/qla2x00t.c 2006-11-03 17:41:16 UTC (rev 27)
@@ -94,7 +94,7 @@
static void q2t_host_action(scsi_qla_host_t *ha,
qla2x_tgt_host_action_t action);
static void q2t_send_term_exchange(scsi_qla_host_t *ha, struct q2t_cmd *cmd,
- atio_entry_t *atio);
+ atio_entry_t *atio, int ha_locked);
/*
* Global Variables
@@ -694,7 +694,7 @@
prm.cmd->state = Q2T_STATE_ABORTED;
- q2t_send_term_exchange(ha, prm.cmd, &prm.cmd->atio);
+ q2t_send_term_exchange(ha, prm.cmd, &prm.cmd->atio, 0);
/* !! At this point cmd could be already freed !! */
goto out;
}
@@ -880,17 +880,18 @@
}
static void q2t_send_term_exchange(scsi_qla_host_t *ha, struct q2t_cmd *cmd,
- atio_entry_t *atio)
+ atio_entry_t *atio, int ha_locked)
{
ctio_ret_entry_t *ctio;
- unsigned long flags;
+ unsigned long flags = 0;
int do_tgt_cmd_done = 0;
TRACE_ENTRY();
TRACE_DBG("Sending TERM EXCH CTIO (ha=%p)", ha);
- spin_lock_irqsave(&ha->hardware_lock, flags);
+ if (!ha_locked)
+ spin_lock_irqsave(&ha->hardware_lock, flags);
/* Send marker if required */
if (tgt_data.issue_marker(ha) != QLA_SUCCESS) {
@@ -934,7 +935,8 @@
q2t_exec_queue(ha);
out_unlock:
- spin_unlock_irqrestore(&ha->hardware_lock, flags);
+ if (!ha_locked)
+ spin_unlock_irqrestore(&ha->hardware_lock, flags);
if (do_tgt_cmd_done) {
msleep(250);
@@ -1742,7 +1744,7 @@
rc = q2t_send_cmd_to_scst(ha, atio);
if (unlikely(rc != 0)) {
if (rc == -ESRCH) {
- q2t_send_term_exchange(ha, NULL, atio);
+ q2t_send_term_exchange(ha, NULL, atio, 1);
} else {
PRINT_INFO("qla2x00tgt(%ld): Unable to "
"send the command to SCSI target "
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|