twx-linux/include
Tejun Heo 31cc23b349 libata-pmp-prep: implement ops->qc_defer()
Controllers which support PMP have various restrictions on which
combinations of commands are allowed to what number of devices
concurrently.  This patch implements ops->qc_defer() which determines
whether a qc can be issued at the moment or should be deferred.

If the function returns ATA_DEFER_LINK, the qc will be deferred until
a qc completes on the link.  If ATA_DEFER_PORT, until a qc completes
on any link.  The defer conditions are advisory and in general
ATA_DEFER_LINK can be considered as lower priority deferring than
ATA_DEFER_PORT.

ops->qc_defer() replaces fixed ata_scmd_need_defer().  For standard
NCQ/non-NCQ exclusion, ata_std_qc_defer() is implemented.  ahci and
sata_sil24 are converted to use ata_std_qc_defer().

ops->qc_defer() is heavier than the original mechanism because full qc
is prepped before determining to defer it, but various information is
needed to determine defer conditinos and fully translating a qc is the
only way to supply such information in generic manner.

IMHO, this shouldn't cause any noticeable performance issues as

* for most cases deferring occurs rarely (except for NCQ-aware
  cmd-switching PMP)
* translation itself isn't that expensive
* once deferred the command won't be repeated until another command
  completes which usually is a very long time cpu-wise.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-10-12 14:55:41 -04:00
..
acpi ACPI: CONFIG_ACPI_SLEEP=n power off regression in 2.6.23-rc8 (NOT in rc7) 2007-09-25 17:58:52 -04:00
asm-alpha
asm-arm Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-backlight 2007-10-11 19:19:50 -07:00
asm-avr32 [AVR32] Don't use __builtin_xchg() 2007-10-11 13:32:56 +02:00
asm-blackfin Blackfin arch: update kgdb patch 2007-10-10 16:47:58 +08:00
asm-cris
asm-frv
asm-generic libata-portmap: Remove unused definitions 2007-10-12 14:55:37 -04:00
asm-h8300 Binfmt_flat: Add minimum support for the Blackfin relocations 2007-10-03 23:41:43 +08:00
asm-ia64
asm-m32r Binfmt_flat: Add minimum support for the Blackfin relocations 2007-10-03 23:41:43 +08:00
asm-m68k
asm-m68knommu Binfmt_flat: Add minimum support for the Blackfin relocations 2007-10-03 23:41:43 +08:00
asm-mips [MIPS] R1: Fix hazard barriers to make kernels work on R2 also. 2007-10-11 23:46:19 +01:00
asm-parisc
asm-powerpc [POWERPC] Use 1TB segments 2007-10-12 14:05:17 +10:00
asm-ppc
asm-s390
asm-sh i386/x86_64: move headers to include/asm-x86 2007-10-11 11:20:03 +02:00
asm-sh64
asm-sparc
asm-sparc64
asm-um
asm-v850 Binfmt_flat: Add minimum support for the Blackfin relocations 2007-10-03 23:41:43 +08:00
asm-x86 i386/x86_64: move headers to include/asm-x86 2007-10-11 11:20:03 +02:00
asm-xtensa
crypto [CRYPTO] sha: Add header file for SHA definitions 2007-10-10 16:55:50 -07:00
keys
linux libata-pmp-prep: implement ops->qc_defer() 2007-10-12 14:55:41 -04:00
math-emu
media V4L/DVB (6293): V4L: convert struct class_device to struct device 2007-10-10 00:03:14 -03:00
mtd
net [IPv6]: Export userland ND options through netlink (RDNSS support) 2007-10-10 21:22:05 -07:00
pcmcia
rdma IB/cm: Modify interface to send MRAs in response to duplicate messages 2007-10-09 19:59:17 -07:00
rxrpc
scsi
sound
video
xen
Kbuild