linux/drivers/scsi
Mike Christie 77a23c21aa [SCSI] libiscsi: fix iscsi cmdsn allocation
The cmdsn allocation and pdu transmit code can race, and we can end
up sending a pdu with cmdsn 10 before a pdu with 5. The target will
then fail the connection/session. This patch fixes the problem by
delaying the cmdsn allocation until we are about to send the pdu.

This also removes the xmitmutex. We were using the connection xmitmutex
during error handling to handle races with mtask and ctask cleanup and
completion. For ctasks we now have nice refcounting and for the mtask,
if we hit the case where the mtask timesout and it is floating
around somewhere in the driver, we end up dropping the session.
And to handle session level cleanup, we use the xmit suspend bit
along with scsi_flush_queue and the session lock to make sure
that the xmit thread is not possibly transmitting a task while
we are trying to kill it.

Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Cc: Roland Dreier <rdreier@cisco.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2007-06-02 15:34:14 -04:00
..
aacraid [SCSI] aacraid: Changeable queue depth 2007-06-01 11:39:56 -04:00
aic7xxx [SCSI] Merge up to linux-2.6 head 2007-05-30 23:57:05 -05:00
aic7xxx_old Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
aic94xx [SCSI] aic94xx: asd_clear_nexus should fail if the cleared task does not complete 2007-05-22 14:12:45 -05:00
arcmsr [SCSI] arcmsr: convert to use the data buffer accessors 2007-05-27 22:28:21 -05:00
arm [ARM] ecard: add ecardm_iomap() / ecardm_iounmap() 2007-05-11 17:19:02 +01:00
dpt [SCSI] dpt: whitespace cleanup 2007-04-01 10:10:04 -05:00
ibmvscsi [SCSI] ibmvscsi: Changeable queue depth 2007-05-29 22:52:31 -05:00
libsas [SCSI] libsas: convert to use the data buffer accessors 2007-05-29 12:50:54 -05:00
lpfc [SCSI] lpfc 8.1.12 : Change version number to 8.1.12 2007-05-06 09:33:16 -05:00
megaraid [SCSI] megaraid: convert to use the data buffer accessors 2007-05-31 18:38:36 -04:00
pcmcia [SCSI] sym53c500_cs: convert to use the data buffer accessors 2007-05-26 19:09:22 -05:00
qla2xxx [SCSI] qla2xxx: convert to use the data buffer accessors 2007-05-31 12:23:49 -05:00
qla4xxx [SCSI] iscsi class, qla4xxx, iscsi_tcp, ib_iser: export/set initiator name 2007-06-01 12:56:40 -04:00
sym53c8xx_2 Fix misspellings of "agressive". 2007-02-17 19:20:16 +01:00
.gitignore
3w-9xxx.c [SCSI] 3w-9xxx: eliminate missed map_single path 2007-05-31 08:23:02 -05:00
3w-9xxx.h [SCSI] 3ware 9000 add support for 9650SE 2006-11-09 14:27:57 +09:00
3w-xxxx.c [SCSI] 3w-xxxx: convert to use the data buffer accessors 2007-05-30 23:29:32 -05:00
3w-xxxx.h [SCSI] 3ware 8000 serialize reset code 2007-01-06 09:18:00 -06:00
53c700_d.h_shipped
53c700.c [SCSI] 53c700: convert to use the data buffer accessors 2007-05-26 16:30:04 -05:00
53c700.h [SCSI] 53c700: Allow setting burst length 2007-01-13 13:44:30 -06:00
53c700.scr
a100u2w.c [SCSI] a100u2w: convert to use the data buffer accessors 2007-05-26 19:12:34 -05: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: cleanups 2007-05-27 15:05:10 -05:00
aha152x.c [SCSI] aha152x: use wait_for_completion_timeout 2007-05-22 10:50:19 -05:00
aha152x.h
aha1542.c PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
aha1542.h
aha1740.c [SCSI] aha1740: convert to use the data buffer accessors 2007-05-26 19:12:56 -05:00
aha1740.h
aic7xxx_old.c [SCSI] aic7xxx_old: convert to use the data buffer accessors 2007-05-27 21:42:56 -05: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 m68k: Atari SCSI workqueue updates 2007-05-04 17:59:06 -07:00
atari_scsi.c m68k: Atari SCSI driver compile fixes 2007-05-04 17:59:05 -07:00
atari_scsi.h m68k: Atari SCSI driver compile fixes 2007-05-04 17:59:05 -07:00
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: convert to use the data buffer accessors 2007-05-26 19:21:37 -05:00
BusLogic.h [SCSI] BusLogic: Replace 'boolean' by 'bool' 2007-02-07 18:32:29 -05:00
ch.c [SCSI] ch: kmalloc/memset->kzalloc 2007-05-06 09:33:11 -05: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 Fix occurrences of "the the " 2007-05-09 08:57:56 +02: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 [SCSI] dpt_i2o: convert to use the data buffer accessors 2007-05-31 12:25:27 -05: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: Remove FALSE/TRUE defines 2007-03-20 11:27:03 -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 [SCSI] eata: convert to use the data buffer accessors 2007-05-26 19:13:55 -05:00
esp_scsi.c [SCSI] esp: use shost_priv 2007-05-31 17:30:04 -04:00
esp_scsi.h [SCSI] esp: use shost_priv 2007-05-31 17:30:04 -04: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 [SCSI] fdomain: fix PCMCIA-related warnings 2007-05-27 12:59:28 -05: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 [SCSI] gdth: Fix obvious typo "spin_lock_irqrestore()" 2007-05-30 08:39:52 -05: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: use the proper semaphore to protect the class lists 2007-04-27 10:57:30 -07: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 [SCSI] ibmmca: convert to use the data buffer accessors 2007-05-26 16:30:17 -05:00
ide-scsi.c ide: move IDE settings handling to ide-proc.c 2007-05-10 00:01:10 +02: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 [SCSI] initio: convert to use the data buffer accessors 2007-05-26 19:13:27 -05:00
initio.h [SCSI] initio: Convert into a real Linux driver and update to modern style 2007-05-22 11:08:56 -05:00
ipr.c [SCSI] Merge up to linux-2.6 head 2007-05-30 23:57:05 -05:00
ipr.h [SCSI] ipr: Use PCI-E reset API for new ipr adapter 2007-05-08 11:54:40 -05:00
ips.c [SCSI] ips: remove kernel 2.4 code 2007-05-24 09:14:41 -05:00
ips.h [SCSI] ips: remove kernel 2.4 code 2007-05-24 09:14:41 -05:00
iscsi_tcp.c [SCSI] libiscsi: fix iscsi cmdsn allocation 2007-06-02 15:34:14 -04:00
iscsi_tcp.h [SCSI] iscsi tcp: fix iscsi xmit state machine 2007-06-01 12:59:26 -04:00
jazz_esp.c [SCSI] esp: use shost_priv 2007-05-31 17:30:04 -04:00
Kconfig [SCSI] Merge up to linux-2.6 head 2007-05-30 23:57:05 -05:00
lasi700.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
libiscsi.c [SCSI] libiscsi: fix iscsi cmdsn allocation 2007-06-02 15:34:14 -04:00
libsrp.c [SCSI] tgt: fix a rdma indirect transfer error bug 2007-05-16 12:45:17 -04:00
mac53c94.c [SCSI] mac53c94: convert to use the data buffer accessors 2007-05-26 19:07:50 -05: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] Merge up to linux-2.6 head 2007-05-30 23:57:05 -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_old: convert to use the data buffer accessors 2007-05-31 18:11:21 -04:00
megaraid.h [SCSI] megaraid: fix warnings when CONFIG_PROC_FS=n 2007-05-08 11:15:08 -05:00
mesh.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-05-08 20:32:16 -07:00
mesh.h
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 [SCSI] NCR53c406a: convert to use the data buffer accessors 2007-05-26 19:08:20 -05: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 [SCSI] ncr5380 warning fixes 2007-05-24 09:13:25 -05:00
NCR5380.h [SCSI] ncr5380 warning fixes 2007-05-24 09:13:25 -05: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 [SCSI] nsp32: convert to use the data buffer accessors 2007-05-30 08:38:50 -05: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 [SCSI] modalias for scsi devices 2007-04-17 18:15:04 -04: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 [SCSI] pluto: Use wait_for_completion_timeout. 2007-05-29 02:49:05 -07: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 [SCSI] qla1280: use DMA_64BIT_MASK instead of ~ 0ULL 2007-05-06 09:33:11 -05:00
qla1280.h
qlogicfas408.c [SCSI] qlogicfas408: convert to use the data buffer accessors 2007-05-26 19:21:09 -05: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/64] constify of_get_property return: drivers 2007-04-26 01:54:27 -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 header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
scsi_debug.h
scsi_devinfo.c [SCSI] stex: fix id mapping issue 2007-05-16 12:40:21 -04:00
scsi_error.c [SCSI] scsi_error: send the sense buffer down without copying 2007-05-24 09:10:02 -05:00
scsi_ioctl.c [PATCH] scsi: kill overeager "not-ready" messages 2006-07-28 09:04:09 +02:00
scsi_lib.c [SCSI] scsi_lib: add scatter/gather data buffer accessors 2007-05-26 16:29:59 -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 [NETLINK]: Switch cb_lock spinlock to mutex and allow to override it 2007-04-25 22:29:03 -07: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 [SCSI] fix scsi_wait_scan build problem 2007-03-21 08:15:41 -06: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] kill scsi host template suspend/resume 2007-05-22 10:41:12 -05: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: fix sysfs deadlock on vport delete 2007-05-26 11:47:58 -05:00
scsi_transport_iscsi.c [SCSI] iscsi class, iscsi_tcp, ib_iser: add sysfs chap file 2007-06-01 12:58:58 -04: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] Merge up to linux-2.6 head 2007-05-30 23:57:05 -05:00
seagate.c [SCSI] seagate: remove BROKEN tag 2007-01-03 16:57:38 -06:00
sg.c [SCSI] sg: remove unnecessary check 2007-05-28 09:08:32 -05:00
sgiwd93.c Convert SGI IP22 and specific drivers to platform_device. 2007-05-11 17:00:29 +01:00
sim710.c [SCSI] 53c700: Allow setting burst length 2007-01-13 13:44:30 -06:00
sni_53c710.c Replace deprecated SA_xxx interrupt flags 2007-05-08 11:15:08 -07: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 [SCSI] modalias for scsi devices 2007-04-17 18:15:04 -04:00
sr.h
st_options.h
st.c [SCSI] modalias for scsi devices 2007-04-17 18:15:04 -04: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 [SCSI] Merge up to linux-2.6 head 2007-05-30 23:57:05 -05: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
sun_esp.c [SCSI] esp: use shost_priv 2007-05-31 17:30:04 -04:00
sym53c416.c [SCSI] sym53c416: convert to use the data buffer accessors 2007-05-26 19:08:50 -05: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 [SCSI] tmscsim: convert to use the data buffer accessors 2007-05-27 16:11:01 -05:00
tmscsim.h [SCSI] tmscsim: remove bogus endianness conversions 2007-05-06 09:33:21 -05:00
u14-34f.c [SCSI] u14-34f: convert to use the data buffer accessors 2007-05-26 19:19:04 -05:00
ultrastor.c [SCSI] ultrastor: convert to use the data buffer accessors 2007-05-26 19:18:38 -05: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 [SCSI] wd7000: convert to use the data buffer accessors 2007-05-26 19:18:10 -05:00
zalon.c [PATCH] irq-flags: scsi: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00