Skip to content

Commit

Permalink
Merge by hand (conflicts between pending drivers and kfree cleanups)
Browse files Browse the repository at this point in the history
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
  • Loading branch information
James Bottomley committed Nov 8, 2005
2 parents f093182 + 3da8b71 commit 383f974
Show file tree
Hide file tree
Showing 33 changed files with 1,414 additions and 4,791 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
Loading

0 comments on commit 383f974

Please sign in to comment.