linux/drivers/scsi
Mike Christie fff9d40ce0 [SCSI] fc class: unblock target after calling terminate callback (take 2)
When we block a rport and the driver implements the terminate
callback we will fail IO that was running quickly. However
IO that was in the scsi_device/block queue sits there until
the dev_loss_tmo fires, and this can make it look like IO is
lost because new IO will get executed but that IO stuck in
the blocked queue sits there for some time longer.

With this patch when the fast io fail tmo fires, we will
fail the blocked IO and any new IO. This patch also allows
all drivers to partially support the fast io fail tmo. If the
terminate io callback is not implemented, we will still fail blocked
IO and any new IO, so multipath can handle that.

This patch also allows the fc and iscsi classes to implement the
same behavior. The timers are just unfornately named differently.

This patch also fixes the problem where drivers were unblocking
the target in their terminate callback, which was needed for
rport removal, but for fast io fail timeout it would cause
IO to bounce arround the scsi/block layer and the LLD queuecommand.
And it for drivers that could have IO stuck but did not have
a terminate callback the unblock calls in the class will fix
them.

v2.
- fix up bit setting style to meet JamesS's pref.
- Broke out new host byte error changes to make it easier to read.
- added JamesS's ack from list.
v1
- initial patch

Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Acked-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
2008-10-13 09:28:47 -04:00
..
aacraid block: unify request timeout handling 2008-10-09 08:56:13 +02:00
aic7xxx
aic7xxx_old
aic94xx [SCSI] replace __FUNCTION__ with __func__ 2008-07-27 10:31:49 -04:00
arcmsr
arm [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
device_handler [SCSI] scsi_dh: suppress comparison warning 2008-10-03 12:11:51 -05:00
dpt removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
ibmvscsi block: unify request timeout handling 2008-10-09 08:56:13 +02:00
libsas Merge branch 'for-2.6.28' of git://git.kernel.dk/linux-2.6-block 2008-10-10 10:52:45 -07:00
lpfc [SCSI] lpfc: use SCSI_MLQUEUE_TARGET_BUSY when catching the rport transition race 2008-10-13 09:28:47 -04:00
megaraid block: unify request timeout handling 2008-10-09 08:56:13 +02:00
pcmcia removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
qla2xxx [SCSI] qla2xxx: return SCSI_MLQUEUE_TARGET_BUSY when driver has detected rport error or race 2008-10-13 09:28:46 -04:00
qla4xxx [SCSI] qla4xxx: return SCSI_MLQUEUE_TARGET_BUSY when driver has detected session error 2008-10-13 09:28:46 -04:00
sym53c8xx_2 block: unify request timeout handling 2008-10-09 08:56:13 +02:00
.gitignore
3w-9xxx.c [SCSI] 3w-9xxx: add MSI support and misc fixes 2008-07-26 15:15:00 -04:00
3w-9xxx.h [SCSI] 3w-9xxx: add MSI support and misc fixes 2008-07-26 15:15:00 -04:00
3w-xxxx.c
3w-xxxx.h
53c700_d.h_shipped
53c700.c
53c700.h
53c700.scr
a100u2w.c Don't crash on IOMMU overflow in A100U2W driver 2008-07-15 14:30:56 -07:00
a100u2w.h
a2091.c
a2091.h
a3000.c
a3000.h
a4000t.c
advansys.c [SCSI] replace __FUNCTION__ with __func__ 2008-07-27 10:31:49 -04:00
aha152x.c [SCSI] replace __FUNCTION__ with __func__ 2008-07-27 10:31:49 -04:00
aha152x.h
aha1542.c
aha1542.h
aha1740.c
aha1740.h
aic7xxx_old.c
atari_dma_emul.c
atari_NCR5380.c
atari_scsi.c
atari_scsi.h
atp870u.c
atp870u.h
BusLogic.c
BusLogic.h
bvme6000_scsi.c
ch.c [SCSI] ch: fix ch_remove oops 2008-07-26 15:17:47 -04:00
constants.c
dc395x.c
dc395x.h
dmx3191d.c
dpt_i2o.c device create: scsi: convert device_create to device_create_drvdata 2008-07-21 21:54:44 -07:00
dpti.h
dtc.c
dtc.h
eata_generic.h
eata_pio.c
eata_pio.h
eata.c
esp_scsi.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2008-07-15 18:58:04 -07:00
esp_scsi.h sparc: Kill SBUS DVMA layer. 2008-08-29 02:13:10 -07:00
fd_mcs.c
fdomain.c
fdomain.h
FlashPoint.c
g_NCR5380_mmio.c
g_NCR5380.c
g_NCR5380.h
gdth_ioctl.h
gdth_proc.c block: unify request timeout handling 2008-10-09 08:56:13 +02:00
gdth_proc.h block: unify request timeout handling 2008-10-09 08:56:13 +02:00
gdth.c block: unify request timeout handling 2008-10-09 08:56:13 +02:00
gdth.h block: unify request timeout handling 2008-10-09 08:56:13 +02:00
gvp11.c
gvp11.h
hosts.c [SCSI] scsi_host_lookup: error returns and NULL pointers 2008-10-03 11:46:12 -05:00
hptiop.c remove unnecessary <linux/hdreg.h> includes 2008-08-05 18:16:58 +02:00
hptiop.h
ibmmca.c
ide-scsi.c ide: Remove ide_spin_wait_hwgroup() and use special requests instead 2008-10-10 22:39:40 +02:00
imm.c [SCSI] replace __FUNCTION__ with __func__ 2008-07-27 10:31:49 -04:00
imm.h
in2000.c
in2000.h
initio.c
initio.h
ipr.c block: unify request timeout handling 2008-10-09 08:56:13 +02:00
ipr.h [SCSI] replace __FUNCTION__ with __func__ 2008-07-27 10:31:49 -04:00
ips.c block: unify request timeout handling 2008-10-09 08:56:13 +02:00
ips.h removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
iscsi_tcp.c
iscsi_tcp.h
jazz_esp.c
Kconfig [SCSI] qla2xxx: remove the unused SCSI_QLOGIC_FC_FIRMWARE option 2008-10-03 12:11:51 -05:00
lasi700.c
libiscsi.c [SCSI] libiscsi: Use SCSI_MLQUEUE_TARGET_BUSY 2008-10-13 09:28:47 -04:00
libsrp.c [SCSI] replace __FUNCTION__ with __func__ 2008-07-27 10:31:49 -04:00
mac53c94.c
mac53c94.h
mac_esp.c
mac_scsi.c
mac_scsi.h
Makefile [SCSI] sd: Support for SCSI disk (SBC) Data Integrity Field 2008-07-26 15:14:56 -04:00
megaraid.c
megaraid.h
mesh.c
mesh.h
mvme16x_scsi.c
mvme147.c
mvme147.h
mvsas.c
ncr53c8xx.c block: unify request timeout handling 2008-10-09 08:56:13 +02:00
ncr53c8xx.h
NCR53c406a.c
NCR5380.c
NCR5380.h
NCR_D700.c
NCR_D700.h
NCR_Q720.c
NCR_Q720.h
nsp32_debug.c [SCSI] replace __FUNCTION__ with __func__ 2008-07-27 10:31:49 -04:00
nsp32_io.h
nsp32.c removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
nsp32.h removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
osst_detect.h
osst_options.h
osst.c
osst.h
pas16.c
pas16.h
ppa.c [SCSI] replace __FUNCTION__ with __func__ 2008-07-27 10:31:49 -04:00
ppa.h
ps3rom.c
ql1040_fw.h
ql1280_fw.h
ql12160_fw.h
qla1280.c block: unify request timeout handling 2008-10-09 08:56:13 +02:00
qla1280.h
qlogicfas408.c
qlogicfas408.h
qlogicfas.c
qlogicpti_asm.c
qlogicpti.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-10-11 12:39:35 -07:00
qlogicpti.h qlogicpti: Convert to pure OF driver. 2008-08-29 02:14:46 -07:00
raid_class.c
script_asm.pl
scsi_debug.c [SCSI] replace __FUNCTION__ with __func__ 2008-07-27 10:31:49 -04:00
scsi_devinfo.c [SCSI] replace __FUNCTION__ with __func__ 2008-07-27 10:31:49 -04:00
scsi_error.c block: unify request timeout handling 2008-10-09 08:56:13 +02:00
scsi_ioctl.c
scsi_lib_dma.c
scsi_lib.c [SCSI] Add helper code so transport classes/driver can control queueing (v3) 2008-10-13 09:28:46 -04:00
scsi_logging.h
scsi_module.c
scsi_netlink.c [SCSI] scsi_netlink: Add transport and LLD recieve and event support 2008-10-03 11:46:13 -05:00
scsi_priv.h block: unify request timeout handling 2008-10-09 08:56:13 +02:00
scsi_proc.c [SCSI] scsi_host_lookup: error returns and NULL pointers 2008-10-03 11:46:12 -05:00
scsi_sas_internal.h
scsi_scan.c [SCSI] Add helper code so transport classes/driver can control queueing (v3) 2008-10-13 09:28:46 -04:00
scsi_sysctl.c
scsi_sysfs.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2008-10-10 10:53:26 -07:00
scsi_tgt_if.c
scsi_tgt_lib.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2008-10-10 10:53:26 -07:00
scsi_tgt_priv.h [SCSI] replace __FUNCTION__ with __func__ 2008-07-27 10:31:49 -04:00
scsi_transport_api.h
scsi_transport_fc_internal.h
scsi_transport_fc.c [SCSI] fc class: unblock target after calling terminate callback (take 2) 2008-10-13 09:28:47 -04:00
scsi_transport_iscsi.c [SCSI] scsi_host_lookup: error returns and NULL pointers 2008-10-03 11:46:12 -05:00
scsi_transport_sas.c [SCSI] replace __FUNCTION__ with __func__ 2008-07-27 10:31:49 -04:00
scsi_transport_spi.c [SCSI] scsi_transport_spi: fix oops in revalidate 2008-07-30 10:22:39 -05:00
scsi_transport_srp_internal.h
scsi_transport_srp.c
scsi_typedefs.h
scsi_wait_scan.c
scsi.c [SCSI] Add helper code so transport classes/driver can control queueing (v3) 2008-10-13 09:28:46 -04:00
scsi.h
scsicam.c
sd_dif.c [SCSI] sd: Support for SCSI disk (SBC) Data Integrity Field 2008-07-26 15:14:56 -04:00
sd.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2008-10-10 10:53:26 -07:00
sd.h Re-introduce "[SCSI] extend the last_sector_bug flag to cover more sectors" 2008-08-05 21:42:21 -07:00
ses.c [SCSI] ses: fix VPD inquiry overrun 2008-07-30 10:21:56 -05:00
sg.c sg: remove unnecessary blk_rq_unmap_user 2008-10-09 08:56:16 +02:00
sgiwd93.c
sim710.c
sni_53c710.c
sr_ioctl.c
sr_vendor.c
sr.c block: unify request timeout handling 2008-10-09 08:56:13 +02:00
sr.h
st_options.h
st.c [SCSI] st: Remove bogus memset 2008-07-26 15:14:47 -04:00
st.h
stex.c [SCSI] stex: fix queue depth setting 2008-07-26 15:14:49 -04:00
sun3_NCR5380.c
sun3_scsi_vme.c
sun3_scsi.c
sun3_scsi.h
sun3x_esp.c
sun_esp.c sparc: Annotate of_device_id arrays with const or __initdata. 2008-08-31 01:23:17 -07:00
sym53c416.c
sym53c416.h
t128.c
t128.h
tmscsim.c [SCSI] tmscsim: Fixup KERN_INFO in printk 2008-10-03 11:46:12 -05:00
tmscsim.h
u14-34f.c
ultrastor.c
ultrastor.h
wd33c93.c
wd33c93.h
wd7000.c [SCSI] replace __FUNCTION__ with __func__ 2008-07-27 10:31:49 -04:00
zalon.c [SCSI] replace __FUNCTION__ with __func__ 2008-07-27 10:31:49 -04:00
zorro7xx.c