linux/drivers/scsi
Alan Stern e47373ec1c [SCSI] return success after retries in scsi_eh_tur
The problem lies in the way the error handler uses TEST UNIT READY to
tell whether error recovery has succeeded.  The scsi_eh_tur function
gives up after one round of retrying; after that it decides that more
error recovery is needed.

However TUR is liable to report sense data indicating a retry is needed
when in fact error recovery has succeeded.  A typical example might be
SK=2, ASC=4, ASCQ=1 (Logical unit in process of becoming ready).  The mere
fact that we were able to get a sensible reply to the TUR should indicate
that the device is working well enough to stop error recovery.

I ran across a case back in January where this happened.  A CD-ROM drive
timed out the INQUIRY command, and a device reset fixed the blockage.
But then the drive kept responding with 2/4/1 -- because it was spinning
up I suppose -- until the error handler gave up and placed it offline.
If the initial INQUIRY had received the 2/4/1 instead, everything would
have worked okay.  It doesn't seem reasonable for things to fail just
because the error handler had started running.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-09-06 17:19:23 -05:00
..
aacraid [SCSI] aacraid: bad BUG_ON fix 2005-09-04 19:46:06 -05:00
aic7xxx [SCSI] aic7xxx: remove aiclib.c 2005-09-04 19:46:07 -05:00
aic7xxx_old
arm [PATCH] Driver Core: drivers/s390/net/qeth_sys.c - drivers/usb/gadget/pxa2xx_udc.c: update device attribute callbacks 2005-06-20 15:15:35 -07:00
dpt [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
ibmvscsi [SCSI] ibmvscsi: handle large scatter/gather lists 2005-09-06 17:11:54 -05:00
lpfc [SCSI] lpfc driver 8.0.30 : update version to 8.0.30 2005-08-12 12:09:32 -05:00
megaraid [SCSI] remove scsi_set_device 2005-06-26 08:31:47 -05:00
pcmcia [PATCH] pcmcia: remove references to pcmcia/version.h 2005-07-07 18:24:07 -07:00
qla2xxx [SCSI] qla2xxx: Update version number to 8.01.00-k. 2005-09-04 19:54:06 -05:00
sym53c8xx_2 [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
3w-9xxx.c [PATCH] PCI: make drivers use the pci shutdown callback instead of the driver core callback. 2005-06-27 21:52:47 -07:00
3w-9xxx.h
3w-xxxx.c [PATCH] PCI: make drivers use the pci shutdown callback instead of the driver core callback. 2005-06-27 21:52:47 -07:00
3w-xxxx.h
53c7xx_d.h_shipped
53c7xx_u.h_shipped
53c7xx.c
53c7xx.h
53c7xx.scr
53c700_d.h_shipped
53c700.c [PATCH] Driver Core: drivers/s390/net/qeth_sys.c - drivers/usb/gadget/pxa2xx_udc.c: update device attribute callbacks 2005-06-20 15:15:35 -07:00
53c700.h
53c700.scr
a100u2w.c
a100u2w.h
a2091.c [SCSI] allow sleeping in ->eh_host_reset_handler() 2005-06-17 12:05:18 -05:00
a2091.h
a3000.c [SCSI] allow sleeping in ->eh_host_reset_handler() 2005-06-17 12:05:18 -05:00
a3000.h
advansys.c [SCSI] add global timeout to the scsi mid-layer 2005-08-08 09:55:39 -05:00
advansys.h
aha152x.c [SCSI] allow sleeping in ->eh_device_reset_handler() 2005-06-17 12:05:03 -05:00
aha152x.h
aha1542.c [SCSI] allow sleeping in ->eh_host_reset_handler() 2005-06-17 12:05:18 -05:00
aha1542.h [SCSI] Remove no-op implementations of SCSI EH hooks 2005-06-17 12:04:45 -05:00
aha1740.c
aha1740.h
ahci.c [PATCH] libata: ahci: remove ata_port_start/stop() calls 2005-06-28 00:08:00 -04:00
aic7xxx_old.c [SCSI] remove scsi_set_device 2005-06-26 08:31:47 -05:00
amiga7xx.c
amiga7xx.h
ata_piix.c libata: Check PCI sub-class code before disabling AHCI 2005-07-28 15:54:15 -04:00
atari_dma_emul.c
atari_NCR5380.c
atari_scsi.c
atari_scsi.h
atp870u.c
atp870u.h
blz1230.c
blz2060.c
BusLogic.c [SCSI] allow sleeping in ->eh_host_reset_handler() 2005-06-17 12:05:18 -05:00
BusLogic.h
bvme6000.c
bvme6000.h
ch.c [SCSI] git-scsi-misc: drivers/scsi/ch.c: remove devfs stuff 2005-07-30 09:08:21 -05:00
constants.c [SCSI] drivers/scsi/constants.c should include scsi_dbg.h 2005-08-28 11:14:10 -05:00
cpqfcTS.h
cpqfcTSchip.h
cpqfcTScontrol.c
cpqfcTSi2c.c
cpqfcTSinit.c [SCSI] remove scsi_set_device 2005-06-26 08:31:47 -05:00
cpqfcTSioctl.h
cpqfcTSstructs.h
cpqfcTStrigger.c
cpqfcTStrigger.h
cpqfcTSworker.c
cyberstorm.c
cyberstormII.c
dc395x.c [PATCH] clean up inline static vs static inline 2005-07-27 16:26:20 -07:00
dc395x.h
dec_esp.c
dmx3191d.c [SCSI] Remove no-op implementations of SCSI EH hooks 2005-06-17 12:04:45 -05:00
dpt_i2o.c [SCSI] dpt_i2o warning fix 2005-07-11 09:35:55 -05:00
dpti.h [PATCH] drivers/scsi/dpt*: remove version.h dependencies 2005-06-25 16:25:03 -07:00
dtc.c [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
dtc.h [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
eata_generic.h
eata_pio.c [SCSI] remove scsi_cmnd->abort_reason 2005-06-26 12:14:46 -05:00
eata_pio.h
eata.c [SCSI] remove scsi_cmnd.eh_state 2005-06-26 12:14:10 -05:00
esp.c
esp.h
fastlane.c
fcal.c [SCSI] Remove no-op implementations of SCSI EH hooks 2005-06-17 12:04:45 -05:00
fcal.h
fd_mcs.c [SCSI] allow sleeping in ->eh_bus_reset_handler() 2005-06-17 12:05:10 -05:00
fdomain.c [PATCH] clean up inline static vs static inline 2005-07-27 16:26:20 -07:00
fdomain.h
FlashPoint.c
g_NCR5380_mmio.c
g_NCR5380.c [SCSI] Remove no-op implementations of SCSI EH hooks 2005-06-17 12:04:45 -05:00
g_NCR5380.h [SCSI] Remove no-op implementations of SCSI EH hooks 2005-06-17 12:04:45 -05:00
gdth_ioctl.h
gdth_kcompat.h
gdth_proc.c
gdth_proc.h
gdth.c [SCSI] remove scsi_set_device 2005-06-26 08:31:47 -05:00
gdth.h
gvp11.c [SCSI] allow sleeping in ->eh_host_reset_handler() 2005-06-17 12:05:18 -05:00
gvp11.h
hosts.c [SCSI] host state model update: mediate host add/remove race 2005-07-30 11:13:01 -05:00
hosts.h
ibmmca.c [SCSI] allow sleeping in ->eh_host_reset_handler() 2005-06-17 12:05:18 -05:00
ibmmca.h
ide-scsi.c [SCSI] allow sleeping in ->eh_host_reset_handler() 2005-06-17 12:05:18 -05:00
imm.c [SCSI] allow sleeping in ->eh_bus_reset_handler() 2005-06-17 12:05:10 -05:00
imm.h
in2000.c [SCSI] allow sleeping in ->eh_bus_reset_handler() 2005-06-17 12:05:10 -05:00
in2000.h [SCSI] Remove no-op implementations of SCSI EH hooks 2005-06-17 12:04:45 -05:00
initio.c [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
initio.h [PATCH] drivers/scsi/initio.c: cleanups 2005-06-25 16:25:00 -07:00
ipr.c [PATCH] PCI: make drivers use the pci shutdown callback instead of the driver core callback. 2005-06-27 21:52:47 -07:00
ipr.h
ips.c [SCSI] allow sleeping in ->eh_host_reset_handler() 2005-06-17 12:05:18 -05:00
ips.h [SCSI] remove scsi_set_device 2005-06-26 08:31:47 -05:00
jazz_esp.c
Kconfig [SCSI] embryonic RAID class 2005-08-30 22:48:51 -05:00
lasi700.c
libata-core.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-for-linus-2.6 2005-07-26 13:28:47 -07:00
libata-scsi.c [PATCH] libata fix read capacity handling for more than 2TB 2005-06-27 00:47:48 -04:00
libata.h
mac53c94.c [PATCH] openfirmware: generate device table for userspace 2005-07-06 12:55:20 -07:00
mac53c94.h
mac_esp.c
mac_scsi.c [SCSI] Remove no-op implementations of SCSI EH hooks 2005-06-17 12:04:45 -05:00
mac_scsi.h [SCSI] Remove no-op implementations of SCSI EH hooks 2005-06-17 12:04:45 -05:00
Makefile [SCSI] embryonic RAID class 2005-08-30 22:48:51 -05:00
mca_53c9x.c
megaraid.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-for-linus-2.6 2005-07-26 13:28:47 -07:00
megaraid.h [SCSI] remove scsi_cmnd->state 2005-06-26 12:16:24 -05:00
mesh.c [PATCH] openfirmware: generate device table for userspace 2005-07-06 12:55:20 -07:00
mesh.h
mvme16x.c
mvme16x.h
mvme147.c [SCSI] allow sleeping in ->eh_host_reset_handler() 2005-06-17 12:05:18 -05:00
mvme147.h
ncr53c8xx.c [SCSI] remove scsi_set_device 2005-06-26 08:31:47 -05:00
ncr53c8xx.h
NCR53c406a.c [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
NCR53C9x.c [SCSI] allow sleeping in ->eh_bus_reset_handler() 2005-06-17 12:05:10 -05:00
NCR53C9x.h
NCR5380.c [SCSI] allow sleeping in ->eh_bus_reset_handler() 2005-06-17 12:05:10 -05:00
NCR5380.h [SCSI] Remove no-op implementations of SCSI EH hooks 2005-06-17 12:04:45 -05:00
NCR_D700.c
NCR_D700.h
NCR_Q720.c
NCR_Q720.h
nsp32_debug.c
nsp32_io.h
nsp32.c [SCSI] remove scsi_set_device 2005-06-26 08:31:47 -05:00
nsp32.h
oktagon_esp.c
oktagon_io.S
osst_detect.h
osst_options.h
osst.c [PATCH] class: convert drivers/scsi/* to use the new class api instead of class_simple 2005-06-20 15:15:08 -07:00
osst.h
pas16.c [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
pas16.h [SCSI] Remove no-op implementations of SCSI EH hooks 2005-06-17 12:04:45 -05:00
pci2000.h
pluto.c [SCSI] Remove no-op implementations of SCSI EH hooks 2005-06-17 12:04:45 -05:00
pluto.h
ppa.c [SCSI] allow sleeping in ->eh_bus_reset_handler() 2005-06-17 12:05:10 -05:00
ppa.h
psi240i.c
psi240i.h
psi_chip.h
ql1040_fw.h
ql1280_fw.h
ql12160_fw.h
qla1280.c [SCSI] qla1280: endianess annotations 2005-08-02 11:43:52 -05:00
qla1280.h [SCSI] qla1280: endianess annotations 2005-08-02 11:43:52 -05:00
qlogicfas408.c [SCSI] allow sleeping in ->eh_bus_reset_handler() 2005-06-17 12:05:10 -05:00
qlogicfas408.h [SCSI] Remove no-op implementations of SCSI EH hooks 2005-06-17 12:04:45 -05:00
qlogicfas.c [SCSI] Remove no-op implementations of SCSI EH hooks 2005-06-17 12:04:45 -05:00
qlogicfc_asm.c
qlogicfc.c [SCSI] remove scsi_set_device 2005-06-26 08:31:47 -05:00
qlogicisp_asm.c
qlogicisp.c [SCSI] remove scsi_set_device 2005-06-26 08:31:47 -05:00
qlogicpti_asm.c
qlogicpti.c
qlogicpti.h
raid_class.c [SCSI] embryonic RAID class 2005-08-30 22:48:51 -05:00
sata_nv.c
sata_promise.c Automatic merge of /spare/repo/linux-2.6/.git branch HEAD 2005-06-04 00:40:40 -04:00
sata_promise.h
sata_qstor.c
sata_sil.c [PATCH] sata_sil: Fix FIFO PCI Bus Arbitration kernel oops 2005-06-09 03:06:22 -04:00
sata_sis.c
sata_svw.c [PATCH] sata_svw: bump version number 2005-06-09 03:10:56 -04:00
sata_sx4.c
sata_uli.c
sata_via.c
sata_vsc.c
script_asm.pl
scsi_debug.c [PATCH] make various thing static 2005-06-24 00:06:43 -07:00
scsi_debug.h
scsi_devinfo.c [SCSI] Make the HSG80 a REPORTLUN2 device 2005-08-12 11:40:50 -05:00
scsi_error.c [SCSI] return success after retries in scsi_eh_tur 2005-09-06 17:19:23 -05:00
scsi_ioctl.c [SCSI] host state model update: replace old host bitmap state 2005-07-30 11:10:24 -05:00
scsi_lib.c [SCSI] host state model update: replace old host bitmap state 2005-07-30 11:10:24 -05:00
scsi_logging.h
scsi_module.c
scsi_priv.h [SCSI] remove scsi_eh_eflags_ macros 2005-06-26 12:17:24 -05:00
scsi_proc.c
scsi_scan.c [SCSI] host state model update: mediate host add/remove race 2005-07-30 11:13:01 -05:00
scsi_sysctl.c
scsi_sysfs.c [SCSI] host state model update: replace old host bitmap state 2005-07-30 11:10:24 -05:00
scsi_transport_fc.c [SCSI] correct transport class abstraction to work outside SCSI 2005-08-14 17:21:27 -05:00
scsi_transport_iscsi.c
scsi_transport_spi.c [SCSI] correct transport class abstraction to work outside SCSI 2005-08-14 17:21:27 -05:00
scsi_typedefs.h
scsi.c [SCSI] fix warning in scsi_softirq 2005-08-12 12:27:44 -05:00
scsi.h
scsicam.c
sd.c [SCSI] Redundant this_count check in sd_init_command() 2005-07-14 11:25:17 -04:00
seagate.c [SCSI] allow sleeping in ->eh_bus_reset_handler() 2005-06-17 12:05:10 -05:00
seagate.h [SCSI] Remove no-op implementations of SCSI EH hooks 2005-06-17 12:04:45 -05:00
sg.c [SCSI] sg direct io/mmap oops, st sync 2005-09-04 19:46:03 -05:00
sgiwd93.c [SCSI] allow sleeping in ->eh_host_reset_handler() 2005-06-17 12:05:18 -05:00
sgiwd93.h
sim710.c
sr_ioctl.c
sr_vendor.c
sr.c [SCSI] sr.c: Fix getting wrong size 2005-08-28 11:14:12 -05:00
sr.h [SCSI] sr.c: Fix getting wrong size 2005-08-28 11:14:12 -05:00
st_options.h
st.c This patch fixes in st.c the bug in the signed/unsigned int comparison 2005-09-04 19:45:59 -05:00
st.h [SCSI] drivers/scsi/st.c: add reference count and related fixes 2005-08-08 09:33:48 -05:00
sun3_NCR5380.c
sun3_scsi_vme.c
sun3_scsi.c
sun3_scsi.h
sun3x_esp.c
sym53c8xx_comm.h
sym53c8xx_defs.h
sym53c416.c [SCSI] allow sleeping in ->eh_host_reset_handler() 2005-06-17 12:05:18 -05:00
sym53c416.h [SCSI] Remove no-op implementations of SCSI EH hooks 2005-06-17 12:04:45 -05:00
t128.c [SCSI] Remove no-op implementations of SCSI EH hooks 2005-06-17 12:04:45 -05:00
t128.h [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
tmscsim.c [SCSI] allow sleeping in ->eh_bus_reset_handler() 2005-06-17 12:05:10 -05:00
tmscsim.h
u14-34f.c [SCSI] remove scsi_cmnd.eh_state 2005-06-26 12:14:10 -05:00
ultrastor.c [SCSI] allow sleeping in ->eh_abort_handler() 2005-06-17 12:04:55 -05:00
ultrastor.h
wd33c93.c
wd33c93.h
wd7000.c [SCSI] allow sleeping in ->eh_host_reset_handler() 2005-06-17 12:05:18 -05:00
zalon.c