linux/drivers/scsi
Mark Haverkamp 03d4433721 [SCSI] aacraid: Improved error handling
Received from Mark Salyzyn,

This set of fixes improve error handling stability of the driver. A popular
manifestation of the problems is an NULL pointer reference in the interrupt
handler when referencing portions of the scsi command context, or in the
scsi_done handling when an offlined device is referenced.

The aacraid driver currently does not get notification of orphaned command
completions due to devices going offline. The driver also fails to handle the
commands that are finished by the error handler, and thus can complete again
later at the hands of the adapter causing situations of completion of an
invalid scsi command context. Test Unit Ready calls abort assuming that the
abort was successful, but are not, and thus when the interrupt from the adapter
occurs, they reference invalid command contexts. We add in a TIMED_OUT flag to
inform the aacraid FIB context that the interrupt service should merely release
the driver resources and not complete the command up. We take advantage of this
with the abort handler as well for select abortable commands. And we detect and
react if a command that can not be aborted is currently still outstanding to
the controller when reissued by the retry mechanism.

Signed-off-by: Mark Haverkamp <markh@linux-foundation.org>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2007-03-20 10:56:03 -05:00
..
aacraid [SCSI] aacraid: Improved error handling 2007-03-20 10:56:03 -05:00
aic7xxx [SCSI] aic79xx: remove extra newline from info message 2007-02-16 10:13:53 -06:00
aic7xxx_old Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
aic94xx [SCSI] aic94xx: tie driver to the major number of the sequencer firmware 2007-02-16 09:43:31 -06:00
arcmsr [PATCH] Scheduled removal of SA_xxx interrupt flags fixups 2007-02-14 08:09:54 -08:00
arm [ARM] ARM SCSI: Don't try to dma_map_sg too many scatterlist entries 2007-03-04 20:33:31 +00:00
dpt [PATCH] lockdep: annotate DECLARE_WAIT_QUEUE_HEAD 2006-10-30 12:08:40 -08:00
ibmvscsi [SCSI] tgt: fix sesnse buffer problems 2007-03-11 11:39:27 -05:00
libsas [SCSI] libsas: Add an LU reset mechanism to the error handler 2007-02-03 08:15:55 -06:00
lpfc [SCSI] lpfc: add PCI error recovery support 2007-02-16 09:42:38 -06:00
megaraid [SCSI] megaraid_sas: update version and author info 2007-02-16 10:44:12 -06:00
pcmcia [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
qla2xxx [SCSI] qla2xxx: Update version number to 8.01.07-k6. 2007-03-20 10:51:36 -05:00
qla4xxx [PATCH] Scheduled removal of SA_xxx interrupt flags fixups 2007-02-14 08:09:54 -08:00
sym53c8xx_2 Fix misspellings of "agressive". 2007-02-17 19:20:16 +01:00
.gitignore
3w-9xxx.c [PATCH] mark struct file_operations const 6 2007-02-12 09:48:45 -08:00
3w-9xxx.h [SCSI] 3ware 9000 add support for 9650SE 2006-11-09 14:27:57 +09:00
3w-xxxx.c [PATCH] mark struct file_operations const 6 2007-02-12 09:48:45 -08:00
3w-xxxx.h [SCSI] 3ware 8000 serialize reset code 2007-01-06 09:18:00 -06:00
53c7xx_d.h_shipped
53c7xx_u.h_shipped
53c7xx.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-02-11 11:44:25 -08:00
53c7xx.h
53c7xx.scr
53c700_d.h_shipped
53c700.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
53c700.h [SCSI] 53c700: Allow setting burst length 2007-01-13 13:44:30 -06:00
53c700.scr
a100u2w.c drivers/scsi/a100u2w.c: trivial typo patch 2007-02-17 19:18:52 +01:00
a100u2w.h
a2091.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
a2091.h [SCSI] wd33c93: Scsi_Cmnd convertion 2006-09-12 17:12:31 -05:00
a3000.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
a3000.h [SCSI] wd33c93: Scsi_Cmnd convertion 2006-09-12 17:12:31 -05:00
advansys.c [SCSI] advansys: clean up warnings 2007-02-07 18:32:18 -05:00
advansys.h
aha152x.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
aha152x.h
aha1542.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
aha1542.h
aha1740.c [SCSI] SCSI/aha1740: handle SCSI API errors 2006-11-15 16:38:58 -06:00
aha1740.h
aic7xxx_old.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
amiga7xx.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
amiga7xx.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
atari_dma_emul.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
atari_NCR5380.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
atari_scsi.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
atari_scsi.h
atp870u.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
atp870u.h
blz1230.c [TC] dec_esp: Driver model for the PMAZ-A 2007-02-09 16:23:17 +00:00
blz2060.c [TC] dec_esp: Driver model for the PMAZ-A 2007-02-09 16:23:17 +00:00
BusLogic.c [SCSI] BusLogic: Replace 'boolean' by 'bool' 2007-02-07 18:32:29 -05:00
BusLogic.h [SCSI] BusLogic: Replace 'boolean' by 'bool' 2007-02-07 18:32:29 -05:00
bvme6000.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
bvme6000.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
ch.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
constants.c [SCSI] constants.c: Update ASC list and make it const 2007-03-11 11:21:25 -05:00
cyberstorm.c [TC] dec_esp: Driver model for the PMAZ-A 2007-02-09 16:23:17 +00:00
cyberstormII.c [TC] dec_esp: Driver model for the PMAZ-A 2007-02-09 16:23:17 +00:00
dc395x.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
dc395x.h
dec_esp.c [TC] dec_esp: Driver model for the PMAZ-A 2007-02-09 16:23:17 +00:00
dmx3191d.c [SCSI] pci_module_init conversion in scsi subsystem 2006-09-26 11:35:32 -07:00
dpt_i2o.c [PATCH] mark struct file_operations const 6 2007-02-12 09:48:45 -08:00
dpti.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
dtc.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
dtc.h
eata_generic.h [SCSI] eata_pio cleanup and PCI fix 2006-09-23 20:28:19 -05:00
eata_pio.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
eata_pio.h
eata.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
esp.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
esp.h [SCSI] sparc: Port esp to new SBUS driver layer. 2006-06-23 23:15:54 -07:00
fastlane.c [TC] dec_esp: Driver model for the PMAZ-A 2007-02-09 16:23:17 +00:00
fcal.c [SCSI] Improve inquiry printing 2006-08-06 15:59:26 -05:00
fcal.h
fd_mcs.c [SCSI] minor bug fixes and cleanups 2006-11-15 16:41:27 -06:00
fdomain.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 2006-10-25 20:22:55 -07:00
fdomain.h
FlashPoint.c [SCSI] BusLogic: Replace 'boolean' by 'bool' 2007-02-07 18:32:29 -05:00
g_NCR5380_mmio.c
g_NCR5380.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
g_NCR5380.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
gdth_ioctl.h
gdth_kcompat.h [SCSI] remove the scsi_request interface from the gdth driver 2006-06-10 10:24:40 -05:00
gdth_proc.c [SCSI] remove the scsi_request interface from the gdth driver 2006-06-10 10:24:40 -05:00
gdth_proc.h [SCSI] remove the scsi_request interface from the gdth driver 2006-06-10 10:24:40 -05:00
gdth.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
gdth.h [SCSI] drivers/scsi/gdth.h: removal of old scsi code 2006-09-26 11:35:16 -07:00
gvp11.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
gvp11.h [SCSI] wd33c93: Scsi_Cmnd convertion 2006-09-12 17:12:31 -05:00
hosts.c [SCSI] export scsi-ml functions needed by tgt_scsi_lib and its LLDs 2006-11-25 13:08:56 -06:00
hptiop.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
hptiop.h [SCSI] hptiop: HighPoint RocketRAID 3xxx controller driver 2006-06-10 10:36:13 -05:00
ibmmca.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
ibmmca.h
ide-scsi.c ide: remove ide_drive_t.usage 2007-02-17 02:40:24 +01:00
imm.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
imm.h Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
in2000.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
in2000.h
initio.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
initio.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
ipr.c PCI: remove duplicate device id from ipr 2007-02-07 15:50:06 -08:00
ipr.h [SCSI] ipr: Driver version 2.3.1 2007-01-27 09:26:36 -06:00
ips.c [SCSI] revert "[SCSI] ips soft lockup during reset/initialization" 2006-11-15 16:40:50 -06:00
ips.h [SCSI] ips: fix soft lockup during reset initialization 2006-11-15 16:43:30 -06:00
iscsi_tcp.c [SCSI] iscsi_tcp: print useful error message when iscsi crc23c allocation fails 2007-03-11 11:30:11 -05:00
iscsi_tcp.h Merge mulgrave-w:git/scsi-misc-2.6 2006-09-23 15:33:43 -05:00
jazz_esp.c [TC] dec_esp: Driver model for the PMAZ-A 2007-02-09 16:23:17 +00:00
Kconfig [SCSI] make scsi_wait_scan always modular 2007-03-20 10:48:23 -05:00
lasi700.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
libiscsi.c [SCSI] libiscsi: use get_unaligned 2007-03-11 11:28:09 -05:00
libsrp.c [SCSI] scsi tgt: SCSI RDMA Protocol library functions 2006-12-03 09:27:33 -06:00
mac53c94.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
mac53c94.h
mac_esp.c [TC] dec_esp: Driver model for the PMAZ-A 2007-02-09 16:23:17 +00:00
mac_scsi.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
mac_scsi.h
Makefile [SCSI] make scsi_wait_scan always modular 2007-03-20 10:48:23 -05:00
mca_53c9x.c [TC] dec_esp: Driver model for the PMAZ-A 2007-02-09 16:23:17 +00:00
megaraid.c [SCSI] megaraid: pci_module_init to pci_register_driver 2007-02-16 09:41:45 -06:00
megaraid.h [SCSI] megaraid: fix MMIO casts 2006-12-05 10:25:35 -06:00
mesh.c [PATCH] fix mesh compile errors after irq changes 2006-10-06 12:11:08 -07:00
mesh.h
mvme16x.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
mvme16x.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
mvme147.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
mvme147.h [SCSI] wd33c93: Scsi_Cmnd convertion 2006-09-12 17:12:31 -05:00
ncr53c8xx.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2006-12-05 16:09:46 -08:00
ncr53c8xx.h Fix misc .c/.h comment typos 2006-11-30 05:24:39 +01:00
NCR53c406a.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
NCR53C9x.c [TC] dec_esp: Driver model for the PMAZ-A 2007-02-09 16:23:17 +00:00
NCR53C9x.h [TC] dec_esp: Driver model for the PMAZ-A 2007-02-09 16:23:17 +00:00
NCR5380.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
NCR5380.h WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
NCR_D700.c [SCSI] NCR_D700: fix compile error 2007-01-27 09:28:58 -06:00
NCR_D700.h
NCR_Q720.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
NCR_Q720.h
nsp32_debug.c
nsp32_io.h
nsp32.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
nsp32.h [SCSI] drivers/scsi/nsp32.h: removal of old scsi code 2006-09-26 10:39:00 -07:00
oktagon_esp.c [TC] dec_esp: Driver model for the PMAZ-A 2007-02-09 16:23:17 +00:00
oktagon_io.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
osst_detect.h
osst_options.h
osst.c Replace remaining references to "driverfs" with "sysfs". 2007-02-17 19:13:42 +01:00
osst.h [PATCH] osst endianness annotations 2007-02-09 09:14:07 -08:00
pas16.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
pas16.h
pluto.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
pluto.h
ppa.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
ppa.h Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
psi240i.c [SCSI] psi240i.c: fix an array overrun 2006-11-10 10:01:42 +09:00
psi240i.h [SCSI] Scsi_Cmnd conversion in psi240i driver 2006-10-25 15:12:38 -07:00
psi_chip.h
ql1040_fw.h
ql1280_fw.h
ql12160_fw.h
qla1280.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
qla1280.h
qlogicfas408.c [SCSI] Scsi_Cmnd conversion in qlogicfas408 driver 2006-10-25 15:11:55 -07:00
qlogicfas408.h [SCSI] Scsi_Cmnd conversion in qlogicfas408 driver 2006-10-25 15:11:55 -07:00
qlogicfas.c
qlogicpti_asm.c [SPARC]: Fix some section mismatch warnings in sparc drivers. 2006-10-17 19:28:51 -07:00
qlogicpti.c [SPARC]: Fix some section mismatch warnings in sparc drivers. 2006-10-17 19:28:51 -07:00
qlogicpti.h
raid_class.c [SCSI] raid class: handle component-add errors 2006-10-04 13:27:26 -05:00
script_asm.pl
scsi_debug.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
scsi_debug.h
scsi_devinfo.c [SCSI] scsi_devinfo: scsi2 HP and Hitachi entries 2006-10-01 15:09:19 -05:00
scsi_error.c [SCSI] scsi_error: Fix lost EH commands 2007-02-03 08:32:10 -06:00
scsi_ioctl.c [PATCH] scsi: kill overeager "not-ready" messages 2006-07-28 09:04:09 +02:00
scsi_lib.c [SCSI] set resid in scsi_io_completion() even for check condition 2007-03-20 10:53:51 -05:00
scsi_logging.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
scsi_module.c
scsi_netlink.c [SCSI] SCSI and FC Transport: add netlink support for posting of transport events 2006-09-02 15:33:49 -05:00
scsi_priv.h [SCSI] scsi_error.c: Export some scsi_eh_* functions 2007-01-27 10:06:34 -06:00
scsi_proc.c [SCSI] scsi_proc.c: display sdev->scsi_level correctly 2007-02-16 11:12:07 -06:00
scsi_sas_internal.h [SCSI] scsi_transport_sas: introduce a sas_port entity 2006-06-28 12:40:54 -04:00
scsi_scan.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-02-19 13:32:28 -08:00
scsi_sysctl.c [PATCH] sysctl: remove insert_at_head from register_sysctl 2007-02-14 08:09:59 -08:00
scsi_sysfs.c [SCSI] SCSI core: better initialization for sdev->scsi_level 2007-02-16 11:22:55 -06:00
scsi_tgt_if.c [SCSI] tgt: fix sesnse buffer problems 2007-03-11 11:39:27 -05:00
scsi_tgt_lib.c [SCSI] tgt: remove the code to build sense 2007-03-20 10:52:59 -05:00
scsi_tgt_priv.h [SCSI] tgt: fix sesnse buffer problems 2007-03-11 11:39:27 -05:00
scsi_transport_api.h [PATCH] SCSI: make scsi_implement_eh() generic API for SCSI transports 2006-05-20 00:39:08 -04:00
scsi_transport_fc.c [SCSI] fc_transport: update potential link speeds 2007-03-20 10:52:04 -05:00
scsi_transport_iscsi.c [SCSI] iscsi transport: use atomic for session_nr allocations 2007-03-11 11:27:28 -05:00
scsi_transport_sas.c Fix typos concerning hierarchy 2007-02-17 19:23:03 +01:00
scsi_transport_spi.c [SCSI] spi transport class: export spi_dv_pending 2007-02-02 20:44:25 -06:00
scsi_typedefs.h [SCSI] remove scsi_request infrastructure 2006-06-10 16:24:40 -05:00
scsi_wait_scan.c [SCSI] Add ability to scan scsi busses asynchronously 2006-10-11 13:44:25 -05:00
scsi.c [SCSI] Make error printing more verbose 2007-03-11 11:17:49 -05:00
scsi.h [SCSI] remove unnecessary includes of linux/config.h from drivers/scsi/ 2006-08-19 13:39:11 -07:00
scsicam.c [SCSI] Bogus disk geometry on large disks 2006-06-26 16:33:10 -05:00
sd.c [SCSI] sd: typo fix: sdkp_printk should be sd_printk 2007-03-11 12:25:33 -05:00
seagate.c [SCSI] seagate: remove BROKEN tag 2007-01-03 16:57:38 -06:00
sg.c [SCSI] sg: fix incorrect last scatg length 2006-11-09 14:28:01 +09:00
sgiwd93.c [SCSI] sgiwd93: interfacing to wd33c93 2007-02-16 09:38:12 -06:00
sim710.c [SCSI] 53c700: Allow setting burst length 2007-01-13 13:44:30 -06:00
sni_53c710.c [SCSI] SNI RM 53c710 driver 2007-01-13 13:49:58 -06:00
sr_ioctl.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
sr_vendor.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
sr.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
sr.h
st_options.h
st.c Replace remaining references to "driverfs" with "sysfs". 2007-02-17 19:13:42 +01:00
st.h [SCSI] st: fix Tape dies if wrong block size used, bug 7919 2007-02-03 08:05:47 -06:00
stex.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
sun3_NCR5380.c [PATCH] m68k trivial build fixes 2006-12-17 10:21:53 -08:00
sun3_scsi_vme.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
sun3_scsi.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
sun3_scsi.h [PATCH] Sun3 SCSI: Make sun3 scsi drivers compile/work again 2006-12-09 09:41:18 -08:00
sun3x_esp.c [TC] dec_esp: Driver model for the PMAZ-A 2007-02-09 16:23:17 +00:00
sym53c416.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
sym53c416.h
t128.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
t128.h [SCSI] scsi: t128 scsi_cmnd convertion 2006-11-15 16:43:50 -06:00
tmscsim.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
tmscsim.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
u14-34f.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
ultrastor.c Various drivers' irq handlers: kill dead code, needless casts 2006-10-06 15:00:58 -04:00
ultrastor.h [SCSI] scsi-driver ultrastore replace Scsi_Cmnd with struct scsi_cmnd 2006-09-07 12:39:34 -05:00
wd33c93.c [SCSI] wd33c93: Fast SCSI with WD33C93B 2007-02-16 09:22:11 -06:00
wd33c93.h [SCSI] wd33c93: Fast SCSI with WD33C93B 2007-02-16 09:22:11 -06:00
wd7000.c [PATCH] Use linux/io.h instead of asm/io.h 2006-10-11 11:14:23 -07:00
zalon.c [PATCH] irq-flags: scsi: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00