linux/drivers/ata
Jeff Garzik f281233d3e SCSI host lock push-down
Move the mid-layer's ->queuecommand() invocation from being locked
with the host lock to being unlocked to facilitate speeding up the
critical path for drivers who don't need this lock taken anyway.

The patch below presents a simple SCSI host lock push-down as an
equivalent transformation.  No locking or other behavior should change
with this patch.  All existing bugs and locking orders are preserved.

Additionally, add one parameter to queuecommand,
	struct Scsi_Host *
and remove one parameter from queuecommand,
	void (*done)(struct scsi_cmnd *)

Scsi_Host* is a convenient pointer that most host drivers need anyway,
and 'done' is redundant to struct scsi_cmnd->scsi_done.

Minimal code disturbance was attempted with this change.  Most drivers
needed only two one-line modifications for their host lock push-down.

Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Acked-by: James Bottomley <James.Bottomley@suse.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-16 13:33:23 -08:00
..
Kconfig libata: remove no longer needed pata_winbond driver 2010-08-25 19:24:15 -04:00
Makefile Drivers: ata: Makefile: replace the use of <module>-objs with <module>-y 2010-10-21 21:17:32 -04:00
ahci.c libata: reimplement link power management 2010-10-21 20:21:04 -04:00
ahci.h libahci: fix result_tf handling after an ATA PIO data-in command 2010-10-21 21:17:00 -04:00
ahci_platform.c libata: reimplement link power management 2010-10-21 20:21:04 -04:00
ata_generic.c ata: Intel IDE-R support 2010-10-21 20:21:05 -04:00
ata_piix.c ata_piix: Add device ID for ICH4-L 2010-10-21 20:21:05 -04:00
libahci.c libahci: fix result_tf handling after an ATA PIO data-in command 2010-10-21 21:17:00 -04:00
libata-acpi.c gcc-4.6: ACPI: fix unused but set variables in ACPI 2010-08-15 00:53:08 -04:00
libata-core.c libata: implement cross-port EH exclusion 2010-10-21 20:21:05 -04:00
libata-eh.c libata: implement cross-port EH exclusion 2010-10-21 20:21:05 -04:00
libata-pmp.c libata: implement LPM support for port multipliers 2010-10-21 20:21:04 -04:00
libata-scsi.c SCSI host lock push-down 2010-11-16 13:33:23 -08:00
libata-sff.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq 2010-10-22 17:13:10 -07:00
libata-transport.c drivers/ata/libata-transport.c: include linux/slab.h 2010-10-21 20:21:04 -04:00
libata-transport.h [libata] Add ATA transport class 2010-10-21 20:21:03 -04:00
libata.h libata: implement cross-port EH exclusion 2010-10-21 20:21:05 -04:00
pata_acpi.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_ali.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_amd.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_artop.c pata_artop: Fix device ID parity check 2010-09-09 14:19:18 -04:00
pata_at32.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
pata_at91.c libata-sff: clean up BMDMA initialization 2010-05-19 13:32:19 -04:00
pata_atiixp.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_atp867x.c libata-sff: separate out BMDMA irq handler 2010-05-25 19:40:24 -04:00
pata_bf54x.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
pata_cmd64x.c pata_cmd64x: revert commit d62f5576 2010-08-25 19:24:15 -04:00
pata_cmd640.c pata_cmd640: implement sff_irq_check() method 2010-10-21 20:21:05 -04:00
pata_cs5520.c libata-sff: separate out BMDMA irq handler 2010-05-25 19:40:24 -04:00
pata_cs5530.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_cs5535.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_cs5536.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_cypress.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_efar.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_hpt3x2n.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_hpt3x3.c libata-sff: separate out BMDMA irq handler 2010-05-25 19:40:24 -04:00
pata_hpt37x.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_hpt366.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_icside.c libata-sff: separate out BMDMA irq handler 2010-05-25 19:40:24 -04:00
pata_isapnp.c [libata] Improve timeout handling 2009-03-24 22:52:39 -04:00
pata_it821x.c Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
pata_it8213.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_ixp4xx_cf.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
pata_jmicron.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_legacy.c pata_legacy: fix CONFIG_PATA_WINBOND_VLB_MODULE test 2010-11-12 17:10:53 -05:00
pata_macio.c powerpc/macio: Fix probing of macio devices by using the right of match table 2010-06-02 17:50:38 +10:00
pata_marvell.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_mpc52xx.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
pata_mpiix.c [libata] convert drivers to use ata.h mode mask defines 2009-03-24 22:13:27 -04:00
pata_netcell.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_ninja32.c libata-sff: separate out BMDMA irq handler 2010-05-25 19:40:24 -04:00
pata_ns87410.c libata: Pass host flags into the pci helper 2010-03-01 14:58:46 -05:00
pata_ns87415.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_octeon_cf.c drivers/ata/pata_octeon_cf.c: delete double assignment 2010-11-12 17:10:55 -05:00
pata_of_platform.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
pata_oldpiix.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_opti.c libata: Pass host flags into the pci helper 2010-03-01 14:58:46 -05:00
pata_optidma.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_palmld.c [ARM] 5522/1: PalmLD: IDE support 2009-05-31 14:50:40 +01:00
pata_pcmcia.c pcmcia: move driver name to struct pcmcia_driver 2010-09-29 17:20:24 +02:00
pata_pdc202xx_old.c pata_pdc202xx_old: implement sff_irq_check() method 2010-10-21 20:21:06 -04:00
pata_pdc2027x.c libata-sff: separate out BMDMA irq handler 2010-05-25 19:40:24 -04:00
pata_piccolo.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_platform.c libata-sff: clean up BMDMA initialization 2010-05-19 13:32:19 -04:00
pata_pxa.c [ARM] pata_pxa: DMA-capable PATA driver 2010-06-18 15:07:32 +08:00
pata_qdi.c [libata] convert drivers to use ata.h mode mask defines 2009-03-24 22:13:27 -04:00
pata_radisys.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_rb532_cf.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
pata_rdc.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_rz1000.c libata: Pass host flags into the pci helper 2010-03-01 14:58:46 -05:00
pata_samsung_cf.c libata: add @ap to ata_wait_register() and introduce ata_msleep() 2010-10-21 20:21:05 -04:00
pata_sc1200.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_scc.c libata: add @ap to ata_wait_register() and introduce ata_msleep() 2010-10-21 20:21:05 -04:00
pata_sch.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_serverworks.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_sil680.c pata_sil680: implement sff_irq_check() method 2010-10-21 20:21:06 -04:00
pata_sis.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_sl82c105.c pata_sl82c105: implement sff_irq_check() method 2010-10-21 20:21:06 -04:00
pata_triflex.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_via.c libata,pata_via: revert ata_wait_idle() removal from ata_sff/via_tf_load() 2010-09-09 22:27:44 -04:00
pdc_adma.c libata-sff: ata_sff_[dumb_]qc_prep are BMDMA specific 2010-05-19 13:36:50 -04:00
sata_dwc_460ex.c [libata] sata_dwc_460ex: signdness bug 2010-08-25 19:24:16 -04:00
sata_fsl.c libata: add @ap to ata_wait_register() and introduce ata_msleep() 2010-10-21 20:21:05 -04:00
sata_inic162x.c libata: add @ap to ata_wait_register() and introduce ata_msleep() 2010-10-21 20:21:05 -04:00
sata_mv.c libata: always use ata_qc_complete_multiple() for NCQ command completions 2010-10-21 20:21:03 -04:00
sata_nv.c libata: always use ata_qc_complete_multiple() for NCQ command completions 2010-10-21 20:21:03 -04:00
sata_promise.c libata-sff: prd is BMDMA specific 2010-05-19 13:38:54 -04:00
sata_promise.h libata annotations and fixes 2008-01-23 05:24:15 -05:00
sata_qstor.c libata-sff: kill dummy BMDMA ops from sata_qstor and pata_octeon_cf 2010-05-25 19:40:45 -04:00
sata_sil.c libata-sff: ata_sff_irq_clear() is BMDMA specific 2010-05-25 19:40:19 -04:00
sata_sil24.c libata: add @ap to ata_wait_register() and introduce ata_msleep() 2010-10-21 20:21:05 -04:00
sata_sis.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
sata_svw.c libata-sff: separate out BMDMA irq handler 2010-05-25 19:40:24 -04:00
sata_sx4.c libata-sff: separate out BMDMA EH 2010-05-19 13:36:46 -04:00
sata_uli.c libata-sff: separate out BMDMA irq handler 2010-05-25 19:40:24 -04:00
sata_via.c libata: add @ap to ata_wait_register() and introduce ata_msleep() 2010-10-21 20:21:05 -04:00
sata_vsc.c libata-sff: separate out BMDMA irq handler 2010-05-25 19:40:24 -04:00
sis.h libata: PATA-mode fixes for sis_sata 2007-07-02 10:17:42 -04:00