linux/drivers/scsi
Christoph Hellwig 71e75c97f9 scsi: convert device_busy to atomic_t
Avoid taking the queue_lock to check the per-device queue limit.  Instead
we do an atomic_inc_return early on to grab our slot in the queue,
and if necessary decrement it after finishing all checks.

Unlike the host and target busy counters this doesn't allow us to avoid the
queue_lock in the request_fn due to the way the interface works, but it'll
allow us to prepare for using the blk-mq code, which doesn't use the
queue_lock at all, and it at least avoids a queue_lock round trip in
scsi_device_unbusy, which is still important given how busy the queue_lock
is.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Webb Scales <webbnh@hp.com>
Acked-by: Jens Axboe <axboe@kernel.dk>
Tested-by: Bart Van Assche <bvanassche@acm.org>
Tested-by: Robert Elliott <elliott@hp.com>
2014-07-25 07:43:45 -04:00
..
aacraid scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
aic7xxx scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
aic94xx [SCSI] libsas: implement > 16 byte CDB support 2013-06-04 11:15:59 -07:00
arcmsr scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
arm scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
be2iscsi be2iscsi: remove potential junk pointer free 2014-06-25 13:29:05 +02:00
bfa bfa: allocate memory with GFP_ATOMIC in spinlock context 2014-05-19 19:12:22 +02:00
bnx2fc scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
bnx2i Merge branch 'sched/urgent' into sched/core, to avoid conflicts 2014-05-07 13:15:46 +02:00
csiostor scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
cxgbi scsi: use 64-bit value for 'max_luns' 2014-07-17 22:07:38 +02:00
device_handler block: add blk_rq_set_block_pc() 2014-06-06 07:57:37 -06:00
dpt
esas2r esas2r: Fix comment 2014-05-19 19:12:23 +02:00
fcoe Merge branch 'sched/urgent' into sched/core, to avoid conflicts 2014-05-07 13:15:46 +02:00
fnic scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
ibmvscsi ibmvstgt: remove 2014-07-17 22:07:43 +02:00
isci arch: Mass conversion of smp_mb__*() 2014-04-18 14:20:48 +02:00
libfc fcp: Do not interpret check condition as underrun 2013-09-04 13:52:35 -07:00
libsas scsi: convert host_busy to atomic_t 2014-07-25 07:43:43 -04:00
lpfc scsi: use 64-bit value for 'max_luns' 2014-07-17 22:07:38 +02:00
megaraid scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
mpt2sas mpt2sas: Add free smids to the head, not tail of list 2014-05-28 18:13:24 +02:00
mpt3sas scsi: use 64-bit value for 'max_luns' 2014-07-17 22:07:38 +02:00
mvsas drivers: scsi: mvsas: fix compiling issue by adding 'MVS_' for "enum pci_interrupt_cause" 2014-06-20 08:22:39 +08:00
osd block: add blk_rq_set_block_pc() 2014-06-06 07:57:37 -06:00
pcmcia scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
pm8001 pm8001: Fix potential null pointer dereference and memory leak. 2014-06-25 13:29:05 +02:00
qla2xxx scsi: use 64-bit value for 'max_luns' 2014-07-17 22:07:38 +02:00
qla4xxx scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
sym53c8xx_2 scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
ufs scsi: ufs: Improve UFS fatal error handling 2014-05-28 12:25:13 +02:00
.gitignore
3w-9xxx.c [SCSI] Disable WRITE SAME for RAID and virtual host adapter drivers 2013-11-29 08:48:39 +04:00
3w-9xxx.h
3w-sas.c [SCSI] Disable WRITE SAME for RAID and virtual host adapter drivers 2013-11-29 08:48:39 +04:00
3w-sas.h
3w-xxxx.c [SCSI] Disable WRITE SAME for RAID and virtual host adapter drivers 2013-11-29 08:48:39 +04:00
3w-xxxx.h
53c700_d.h_shipped
53c700.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
53c700.h
53c700.scr
a100u2w.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
a100u2w.h
a2091.c zorro: ZTWO_VADDR() should return "void __iomem *" 2013-11-26 11:09:07 +01:00
a2091.h
a3000.c zorro: ZTWO_VADDR() should return "void __iomem *" 2013-11-26 11:09:07 +01:00
a3000.h
a4000t.c zorro: ZTWO_VADDR() should return "void __iomem *" 2013-11-26 11:09:07 +01:00
advansys.c scsi: convert host_busy to atomic_t 2014-07-25 07:43:43 -04:00
aha152x.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
aha152x.h
aha1542.c
aha1542.h
aha1740.c aha1740: switch to ->show_info() 2013-04-09 14:13:23 -04:00
aha1740.h
atari_NCR5380.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
atari_scsi.c SCSI for-linus on 20140609 2014-06-09 18:54:06 -07:00
atari_scsi.h scsi/NCR5380: remove unused macro definitions 2014-05-28 12:11:08 +02:00
atp870u.c SCSI: remove unnecessary pci_set_drvdata() 2013-10-14 15:26:04 +02:00
atp870u.h
BusLogic.c [SCSI] buslogic: Added check for DMA mapping errors 2013-10-25 09:57:57 +01:00
BusLogic.h [SCSI] BusLogic: Port driver to 64-bit. 2013-06-26 18:32:47 -07:00
bvme6000_scsi.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
ch.c scsi: Implement ch_printk() 2014-07-17 22:07:40 +02:00
constants.c [SCSI] scsi constants: command, sense key + additional sense strings 2013-07-09 22:52:29 +01:00
dc395x.c scsi: use 64-bit value for 'max_luns' 2014-07-17 22:07:38 +02:00
dc395x.h
dmx3191d.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
dpt_i2o.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
dpti.h scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
dtc.c scsi/NCR5380: fix and standardize NDEBUG macros 2014-05-28 12:10:43 +02:00
dtc.h NCR5830: switch to ->show_info() 2013-04-09 14:13:17 -04:00
eata_generic.h
eata_pio.c [SCSI] remove deprecated IRQF_DISABLED from SCSI 2014-03-19 15:04:44 -07:00
eata_pio.h
eata.c scsi: use 64-bit value for 'max_luns' 2014-07-17 22:07:38 +02:00
esp_scsi.c esp_scsi: Fix tag state corruption when autosensing. 2013-08-01 18:08:34 -07:00
esp_scsi.h esp_scsi: Fix tag state corruption when autosensing. 2013-08-01 18:08:34 -07:00
fdomain.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
fdomain.h
FlashPoint.c [SCSI] BusLogic: Port driver to 64-bit. 2013-06-26 18:32:47 -07:00
g_NCR5380_mmio.c
g_NCR5380.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
g_NCR5380.h scsi/NCR5380: remove old CVS keywords 2014-05-28 12:05:37 +02:00
gdth_ioctl.h
gdth_proc.c gdth: switch to ->show_info() 2013-04-09 14:13:16 -04:00
gdth_proc.h gdth: switch to ->show_info() 2013-04-09 14:13:16 -04:00
gdth.c [SCSI] remove deprecated IRQF_DISABLED from SCSI 2014-03-19 15:04:44 -07:00
gdth.h gdth: switch to ->show_info() 2013-04-09 14:13:16 -04:00
gvp11.c zorro: ZTWO_VADDR() should return "void __iomem *" 2013-11-26 11:09:07 +01:00
gvp11.h
hosts.c scsi: use dev_printk variants where possible 2014-07-17 22:07:42 +02:00
hpsa_cmd.h hpsa: fix handling of hpsa_volume_offline return value 2014-06-02 09:55:02 +02:00
hpsa.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
hpsa.h hpsa: fix event filtering to prevent excessive rescans with old firmware 2014-06-02 09:54:59 +02:00
hptiop.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
hptiop.h [SCSI] hptiop: Support HighPoint RR4520/RR4522 HBA 2012-11-27 08:59:43 +04:00
imm.c imm: switch to ->show_info() 2013-04-09 14:13:16 -04:00
imm.h
in2000.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
in2000.h
initio.c [SCSI] remove deprecated IRQF_DISABLED from SCSI 2014-03-19 15:04:44 -07:00
initio.h
ipr.c Merge branch 'for-3.15/core' of git://git.kernel.dk/linux-block 2014-04-01 19:19:15 -07:00
ipr.h [SCSI] ipr: Add new CCIN definition for Grand Canyon support 2014-03-19 15:04:42 -07:00
ips.c [SCSI] Disable WRITE SAME for RAID and virtual host adapter drivers 2013-11-29 08:48:39 +04:00
ips.h ips: switch to ->show_info() 2013-04-09 14:13:27 -04:00
iscsi_boot_sysfs.c [SCSI] iscsi_boot_sysfs: Fix a memory leak in iscsi_boot_destroy_kset() 2014-03-15 10:19:19 -07:00
iscsi_tcp.c net: Split sk_no_check into sk_no_check_{rx,tx} 2014-05-23 16:28:53 -04:00
iscsi_tcp.h net: Fix use after free by removing length arg from sk_data_ready callbacks. 2014-04-11 16:15:36 -04:00
jazz_esp.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
Kconfig tgt: removal 2014-07-17 22:07:44 +02:00
lasi700.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
libiscsi_tcp.c [SCSI] libiscsi: Reduce locking contention in fast path 2014-03-15 10:19:18 -07:00
libiscsi.c scsi: convert host_busy to atomic_t 2014-07-25 07:43:43 -04:00
mac53c94.c
mac53c94.h
mac_esp.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
mac_scsi.c scsi/NCR5380: fix and standardize NDEBUG macros 2014-05-28 12:10:43 +02:00
mac_scsi.h scsi/NCR5380: remove old CVS keywords 2014-05-28 12:05:37 +02:00
Makefile tgt: removal 2014-07-17 22:07:44 +02:00
megaraid.c scsi: use 64-bit value for 'max_luns' 2014-07-17 22:07:38 +02:00
megaraid.h [SCSI] megaraid: simplify internal command handling 2014-03-27 08:26:31 -07:00
mesh.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
mesh.h
mvme16x_scsi.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
mvme147.c switch wd33c93 to ->show_info() 2013-04-09 14:13:15 -04:00
mvme147.h
mvumi.c SCSI: remove unnecessary pci_set_drvdata() 2013-10-14 15:26:04 +02:00
mvumi.h [SCSI] mvumi: Use PCI_VENDOR_ID_MARVELL_EXT for 0x1b4b 2013-04-15 14:30:44 -06:00
ncr53c8xx.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
ncr53c8xx.h scsi: Remove CONFIG_SCSI_MULTI_LUN 2014-07-17 22:07:35 +02:00
NCR53c406a.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
NCR5380.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
NCR5380.h scsi/NCR5380: dprintk macro 2014-05-28 18:14:16 +02:00
NCR_D700.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
NCR_D700.h
NCR_Q720.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
NCR_Q720.h
nsp32_debug.c
nsp32_io.h
nsp32.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
nsp32.h
osst_detect.h
osst_options.h
osst.c block: add blk_rq_set_block_pc() 2014-06-06 07:57:37 -06:00
osst.h
pas16.c [SCSI] remove deprecated IRQF_DISABLED from SCSI 2014-03-19 15:04:44 -07:00
pas16.h scsi/NCR5380: remove redundant HOSTS_C macro tests 2014-05-28 12:05:36 +02:00
pmcraid.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
pmcraid.h
ppa.c ppa: switch to ->show_info() 2013-04-09 14:13:17 -04:00
ppa.h
ps3rom.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
qla1280.c x86, platforms: Remove SGI Visual Workstation 2014-02-27 08:07:39 -08:00
qla1280.h
qlogicfas408.c
qlogicfas408.h
qlogicfas.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
qlogicpti.c scsi: convert host_busy to atomic_t 2014-07-25 07:43:43 -04:00
qlogicpti.h
raid_class.c
script_asm.pl
scsi_debug.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
scsi_devinfo.c [SCSI] Workaround for disks that report bad optimal transfer length 2013-06-24 13:00:10 -07:00
scsi_error.c scsi: convert host_busy to atomic_t 2014-07-25 07:43:43 -04:00
scsi_ioctl.c scsi: use dev_printk() variants for ioctl 2014-07-17 22:07:41 +02:00
scsi_lib_dma.c
scsi_lib.c scsi: convert device_busy to atomic_t 2014-07-25 07:43:45 -04:00
scsi_logging.h
scsi_module.c
scsi_netlink.c net: Use netlink_ns_capable to verify the permisions of netlink messages 2014-04-24 13:44:54 -04:00
scsi_pm.c scsi: async sd resume 2014-04-10 15:30:35 -07:00
scsi_priv.h scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
scsi_proc.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
scsi_sas_internal.h
scsi_scan.c scsi: use dev_printk variants where possible 2014-07-17 22:07:42 +02:00
scsi_sysctl.c scsi: convert use of typedef ctl_table to struct ctl_table 2014-06-06 16:08:16 -07:00
scsi_sysfs.c scsi: convert device_busy to atomic_t 2014-07-25 07:43:45 -04:00
scsi_trace.c
scsi_transport_api.h
scsi_transport_fc.c tgt: removal 2014-07-17 22:07:44 +02:00
scsi_transport_iscsi.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
scsi_transport_sas.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
scsi_transport_spi.c
scsi_transport_srp.c tgt: removal 2014-07-17 22:07:44 +02:00
scsi_typedefs.h
scsi.c scsi: convert host_busy to atomic_t 2014-07-25 07:43:43 -04:00
scsi.h
scsicam.c
sd_dif.c bio-integrity: Convert to bvec_iter 2013-11-23 22:33:50 -08:00
sd.c sd: split sd_init_command 2014-07-17 22:16:29 +02:00
sd.h sd: Limit transfer length 2014-07-17 22:07:33 +02:00
ses.c [SCSI] ses: Use vpd information from scsi_device 2014-03-27 08:26:31 -07:00
sg.c scsi: convert device_busy to atomic_t 2014-07-25 07:43:45 -04:00
sgiwd93.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sim710.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sni_53c710.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sr_ioctl.c scsi: Implement sr_printk() 2014-07-17 22:07:39 +02:00
sr_vendor.c scsi: Implement sr_printk() 2014-07-17 22:07:39 +02:00
sr.c scsi: set sc_data_direction in common code 2014-07-17 22:11:41 +02:00
sr.h scsi: Implement sr_printk() 2014-07-17 22:07:39 +02:00
st_options.h
st.c scsi: Implement st_printk() 2014-07-17 22:07:41 +02:00
st.h [SCSI] st: raise device limit 2012-09-14 17:59:29 +01:00
stex.c SCSI: remove unnecessary pci_set_drvdata() 2013-10-14 15:26:04 +02:00
storvsc_drv.c [SCSI] storvsc: NULL pointer dereference fix 2014-03-12 13:16:54 +04:00
sun3_NCR5380.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
sun3_scsi_vme.c scsi/NCR5380: merge sun3_scsi_vme.c into sun3_scsi.c 2014-05-28 12:16:28 +02:00
sun3_scsi.c scsi/NCR5380: merge sun3_scsi_vme.c into sun3_scsi.c 2014-05-28 12:16:28 +02:00
sun3_scsi.h scsi/NCR5380: reduce depth of sun3_scsi nested includes 2014-05-28 12:11:33 +02:00
sun3x_esp.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sun_esp.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sym53c416.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sym53c416.h
t128.c scsi/NCR5380: remove old CVS keywords 2014-05-28 12:05:37 +02:00
t128.h scsi/NCR5380: remove old CVS keywords 2014-05-28 12:05:37 +02:00
tmscsim.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
tmscsim.h [SCSI] tmscsim: Move 'last_reset' into host structure 2013-10-25 11:51:37 +01:00
u14-34f.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
ultrastor.c
ultrastor.h
virtio_scsi.c virtio-scsi: fix various bad behavior on aborted requests 2014-06-25 13:29:33 +02:00
vmw_pvscsi.c [SCSI] vmw_pvscsi: Some improvements in pvscsi driver. 2014-03-19 15:04:46 -07:00
vmw_pvscsi.h [SCSI] vmw_pvscsi: Some improvements in pvscsi driver. 2014-03-19 15:04:46 -07:00
wd33c93.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
wd33c93.h switch wd33c93 to ->show_info() 2013-04-09 14:13:15 -04:00
wd7000.c [SCSI] remove deprecated IRQF_DISABLED from SCSI 2014-03-19 15:04:44 -07:00
zalon.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
zorro7xx.c zorro: ZTWO_VADDR() should return "void __iomem *" 2013-11-26 11:09:07 +01:00