Skip to content

Commit

Permalink
Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-for-linus…
Browse files Browse the repository at this point in the history
…-2.6
  • Loading branch information
Linus Torvalds committed Nov 11, 2005
2 parents 33ddcbb + 8a87a0b commit d72d6f1
Show file tree
Hide file tree
Showing 143 changed files with 1,733 additions and 5,102 deletions.
29 changes: 29 additions & 0 deletions Documentation/cciss.txt
Original file line number Diff line number Diff line change
Expand Up @@ -133,3 +133,32 @@ hardware and it is important to prevent the kernel from attempting to directly
access these devices too, as if the array controller were merely a SCSI
controller in the same way that we are allowing it to access SCSI tape drives.

SCSI error handling for tape drives and medium changers
-------------------------------------------------------

The linux SCSI mid layer provides an error handling protocol which
kicks into gear whenever a SCSI command fails to complete within a
certain amount of time (which can vary depending on the command).
The cciss driver participates in this protocol to some extent. The
normal protocol is a four step process. First the device is told
to abort the command. If that doesn't work, the device is reset.
If that doesn't work, the SCSI bus is reset. If that doesn't work
the host bus adapter is reset. Because the cciss driver is a block
driver as well as a SCSI driver and only the tape drives and medium
changers are presented to the SCSI mid layer, and unlike more
straightforward SCSI drivers, disk i/o continues through the block
side during the SCSI error recovery process, the cciss driver only
implements the first two of these actions, aborting the command, and
resetting the device. Additionally, most tape drives will not oblige
in aborting commands, and sometimes it appears they will not even
obey a reset coommand, though in most circumstances they will. In
the case that the command cannot be aborted and the device cannot be
reset, the device will be set offline.

In the event the error handling code is triggered and a tape drive is
successfully reset or the tardy command is successfully aborted, the
tape drive may still not allow i/o to continue until some command
is issued which positions the tape to a known position. Typically you
must rewind the tape (by issuing "mt -f /dev/st0 rewind" for example)
before i/o can proceed again to a tape drive which was reset.

2 changes: 0 additions & 2 deletions Documentation/scsi/00-INDEX
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,6 @@ ppa.txt
- info on driver for IOmega zip drive
qlogicfas.txt
- info on driver for QLogic FASxxx based adapters
qlogicisp.txt
- info on driver for QLogic ISP 1020 based adapters
scsi-generic.txt
- info on the sg driver for generic (non-disk/CD/tape) SCSI devices.
scsi.txt
Expand Down
3 changes: 1 addition & 2 deletions Documentation/scsi/qlogicfas.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ Qlogic boards:
* IQ-PCI-10
* IQ-PCI-D

is provided by the qlogicisp.c driver. Check README.qlogicisp for
details.
is provided by the qla1280 driver.

Nor does it support the PCI-Basic, which is supported by the
'am53c974' driver.
Expand Down
30 changes: 0 additions & 30 deletions Documentation/scsi/qlogicisp.txt

This file was deleted.

8 changes: 4 additions & 4 deletions Documentation/scsi/scsi_eh.txt
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,11 @@ with the command.
The timeout handler is scsi_times_out(). When a timeout occurs, this
function

1. invokes optional hostt->eh_timedout() callback. Return value can
1. invokes optional hostt->eh_timed_out() callback. Return value can
be one of

- EH_HANDLED
This indicates that eh_timedout() dealt with the timeout. The
This indicates that eh_timed_out() dealt with the timeout. The
scmd is passed to __scsi_done() and thus linked into per-cpu
scsi_done_q. Normal command completion described in [1-2-1]
follows.
Expand All @@ -105,7 +105,7 @@ function
command will time out again.

- EH_NOT_HANDLED
This is the same as when eh_timedout() callback doesn't exist.
This is the same as when eh_timed_out() callback doesn't exist.
Step #2 is taken.

2. scsi_eh_scmd_add(scmd, SCSI_EH_CANCEL_CMD) is invoked for the
Expand Down Expand Up @@ -142,7 +142,7 @@ are linked on shost->eh_cmd_q.
Note that this does not mean lower layers are quiescent. If a LLDD
completed a scmd with error status, the LLDD and lower layers are
assumed to forget about the scmd at that point. However, if a scmd
has timed out, unless hostt->eh_timedout() made lower layers forget
has timed out, unless hostt->eh_timed_out() made lower layers forget
about the scmd, which currently no LLDD does, the command is still
active as long as lower layers are concerned and completion could
occur at any time. Of course, all such completions are ignored as the
Expand Down
4 changes: 2 additions & 2 deletions Documentation/scsi/scsi_mid_low_api.txt
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ Next, there is a movement to "outlaw" typedefs introducing synonyms for
struct tags. Both can be still found in the SCSI subsystem, but
the typedefs have been moved to a single file, scsi_typedefs.h to
make their future removal easier, for example:
"typedef struct scsi_host_template Scsi_Host_Template;"
"typedef struct scsi_cmnd Scsi_Cmnd;"

Also, most C99 enhancements are encouraged to the extent they are supported
by the relevant gcc compilers. So C99 style structure and array
Expand Down Expand Up @@ -718,7 +718,7 @@ void scsi_report_bus_reset(struct Scsi_Host * shost, int channel)
*
* Defined in: drivers/scsi/scsi.c .
**/
int scsi_track_queue_full(Scsi_Device *sdev, int depth)
int scsi_track_queue_full(struct scsi_device *sdev, int depth)


/**
Expand Down
1 change: 0 additions & 1 deletion drivers/block/acsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@
#include <linux/slab.h>
#include <linux/interrupt.h>
#include <scsi/scsi.h> /* for SCSI_IOCTL_GET_IDLUN */
typedef void Scsi_Device; /* hack to avoid including scsi.h */
#include <scsi/scsi_ioctl.h>
#include <linux/hdreg.h> /* for HDIO_GETGEO */
#include <linux/blkpg.h>
Expand Down
Loading

0 comments on commit d72d6f1

Please sign in to comment.