1
linux/drivers/ata
Tejun Heo 5ddf24c5ea libata: implement EH fast drain
In most cases, when EH is scheduled, all in-flight commands are
aborted causing EH to kick in immediately.  However, in some cases
(especially with PMP), it's unclear which commands are affected by the
error condition and although aborting all in-flight commands work, it
isn't optimal and may cause unnecessary disruption.  On the other
hand, waiting for in-flight commands to drain themselves can take up
to 30seconds.

This patch implements EH fast drain to handle such situations.  It
gives in-flight commands some time to finish up but doesn't wait for
too long.  After EH is scheduled, fast drain timer is started and if
no other completion occurs in ATA_EH_FASTDRAIN_INTERVAL all in-flight
commands are aborted.  If any completion occurred in the interval, the
port is given another interval to finish up itself.

Currently ATA_EH_FASTDRAIN_INTERVAL is 3 secs which should be enough
for finishing up most commands.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-07-20 08:26:26 -04:00
..
ahci.c The SATA controller device ID is different according to 2007-07-20 08:07:46 -04:00
ata_generic.c [libata] Use ATA_UDMAx standard masks when filling driver's udma_mask info 2007-07-09 12:17:35 -04:00
ata_piix.c Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6 2007-07-12 13:40:57 -07:00
Kconfig pata_hpt3x3: major reworking and testing 2007-07-10 21:30:33 -04:00
libata-acpi.c libata-acpi: implement _GTM/_STM support 2007-07-09 12:17:32 -04:00
libata-core.c libata: implement EH fast drain 2007-07-20 08:26:26 -04:00
libata-eh.c libata: implement EH fast drain 2007-07-20 08:26:26 -04:00
libata-scsi.c libata: improve SCSI scan failure handling 2007-07-20 08:26:25 -04:00
libata-sff.c [libata] Fix reported task file values in sense data 2007-07-20 07:44:44 -04:00
libata.h libata: implement EH fast drain 2007-07-20 08:26:26 -04:00
Makefile libata-acpi: s/CONFIG_SATA_ACPI/CONFIG_ATA_ACPI/ 2007-05-11 18:12:42 -04:00
pata_ali.c PCI: Change all drivers to use pci_device->revision 2007-07-11 16:02:10 -07:00
pata_amd.c PCI: Change all drivers to use pci_device->revision 2007-07-11 16:02:10 -07:00
pata_artop.c [libata] PATA drivers: remove ATA_FLAG_SRST 2007-07-09 12:17:32 -04:00
pata_atiixp.c [libata] PATA drivers: remove ATA_FLAG_SRST 2007-07-09 12:17:32 -04:00
pata_cmd64x.c [libata] PATA drivers: remove ATA_FLAG_SRST 2007-07-09 12:17:32 -04:00
pata_cmd640.c [libata] PATA drivers: remove ATA_FLAG_SRST 2007-07-09 12:17:32 -04:00
pata_cs5520.c libata: Support chips with 64K PRD quirk 2007-07-09 12:17:35 -04:00
pata_cs5530.c PCI: add pci_try_set_mwi 2007-07-11 16:02:11 -07:00
pata_cs5535.c [libata] Use ATA_UDMAx standard masks when filling driver's udma_mask info 2007-07-09 12:17:35 -04:00
pata_cypress.c [libata] PATA drivers: remove ATA_FLAG_SRST 2007-07-09 12:17:32 -04:00
pata_efar.c [libata] PATA drivers: remove ATA_FLAG_SRST 2007-07-09 12:17:32 -04:00
pata_hpt3x2n.c [libata] Use ATA_UDMAx standard masks when filling driver's udma_mask info 2007-07-09 12:17:35 -04:00
pata_hpt3x3.c pata_hpt3x3: fix DMA Kconfig option to actually have a hope of working 2007-07-10 21:36:13 -04:00
pata_hpt37x.c [libata] Use ATA_UDMAx standard masks when filling driver's udma_mask info 2007-07-09 12:17:35 -04:00
pata_hpt366.c [libata] Use ATA_UDMAx standard masks when filling driver's udma_mask info 2007-07-09 12:17:35 -04:00
pata_icside.c [libata] PATA drivers: remove ATA_FLAG_SRST 2007-07-09 12:17:32 -04:00
pata_isapnp.c remove unused variable in pata_isapnp 2007-06-09 22:40:27 -04:00
pata_it821x.c PCI: Change all drivers to use pci_device->revision 2007-07-11 16:02:10 -07:00
pata_it8213.c [libata] Use ATA_UDMAx standard masks when filling driver's udma_mask info 2007-07-09 12:17:35 -04:00
pata_ixp4xx_cf.c [libata] pata_ixp4xx: kill unused var 2007-07-09 12:17:34 -04:00
pata_jmicron.c [libata] Use ATA_UDMAx standard masks when filling driver's udma_mask info 2007-07-09 12:17:35 -04:00
pata_legacy.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_marvell.c [libata] Use ATA_UDMAx standard masks when filling driver's udma_mask info 2007-07-09 12:17:35 -04:00
pata_mpc52xx.c pata_mpc52xx: suspend/resume support 2007-07-10 21:14:20 -04:00
pata_mpiix.c libata: reimplement suspend/resume support using sdev->manage_start_stop 2007-05-11 18:01:03 -04:00
pata_netcell.c [libata] Use ATA_UDMAx standard masks when filling driver's udma_mask info 2007-07-09 12:17:35 -04:00
pata_ns87410.c [libata] PATA drivers: remove ATA_FLAG_SRST 2007-07-09 12:17:32 -04:00
pata_oldpiix.c [libata] PATA drivers: remove ATA_FLAG_SRST 2007-07-09 12:17:32 -04:00
pata_opti.c [libata] PATA drivers: remove ATA_FLAG_SRST 2007-07-09 12:17:32 -04:00
pata_optidma.c [libata] PATA drivers: remove ATA_FLAG_SRST 2007-07-09 12:17:32 -04:00
pata_pcmcia.c PCMCIA: Add another MemoryCard to ide-cs/pata_pcmcia 2007-07-20 01:11:53 +02:00
pata_pdc202xx_old.c [libata] PATA drivers: remove ATA_FLAG_SRST 2007-07-09 12:17:32 -04:00
pata_pdc2027x.c libata: pata_pdc2027x PLL input clock fix 2007-07-02 10:12:34 -04:00
pata_platform.c pata_platform: Fix NULL pointer dereference 2007-07-20 07:16:24 -04:00
pata_qdi.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_radisys.c [libata] PATA drivers: remove ATA_FLAG_SRST 2007-07-09 12:17:32 -04:00
pata_rz1000.c [libata] PATA drivers: remove ATA_FLAG_SRST 2007-07-09 12:17:32 -04:00
pata_sc1200.c libata: Support chips with 64K PRD quirk 2007-07-09 12:17:35 -04:00
pata_scc.c [libata] Fix reported task file values in sense data 2007-07-20 07:44:44 -04:00
pata_serverworks.c PCI: Change all drivers to use pci_device->revision 2007-07-11 16:02:10 -07:00
pata_sil680.c [libata] Use ATA_UDMAx standard masks when filling driver's udma_mask info 2007-07-09 12:17:35 -04:00
pata_sis.c Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6 2007-07-12 13:40:57 -07:00
pata_sl82c105.c PCI: Change all drivers to use pci_device->revision 2007-07-11 16:02:10 -07:00
pata_triflex.c [libata] PATA drivers: remove ATA_FLAG_SRST 2007-07-09 12:17:32 -04:00
pata_via.c PCI: Change all drivers to use pci_device->revision 2007-07-11 16:02:10 -07:00
pata_winbond.c libata: bump versions 2007-05-21 20:26:38 -04:00
pdc_adma.c [libata] Use ATA_UDMAx standard masks when filling driver's udma_mask info 2007-07-09 12:17:35 -04:00
sata_inic162x.c libata: make ->scr_read/write callbacks return error code 2007-07-20 08:02:11 -04:00
sata_mv.c libata: make ->scr_read/write callbacks return error code 2007-07-20 08:02:11 -04:00
sata_nv.c libata: make ->scr_read/write callbacks return error code 2007-07-20 08:02:11 -04:00
sata_promise.c libata: make ->scr_read/write callbacks return error code 2007-07-20 08:02:11 -04:00
sata_promise.h
sata_qstor.c libata: make ->scr_read/write callbacks return error code 2007-07-20 08:02:11 -04:00
sata_sil24.c libata: make ->scr_read/write callbacks return error code 2007-07-20 08:02:11 -04:00
sata_sil.c libata: make ->scr_read/write callbacks return error code 2007-07-20 08:02:11 -04:00
sata_sis.c libata: make ->scr_read/write callbacks return error code 2007-07-20 08:02:11 -04:00
sata_svw.c libata: make ->scr_read/write callbacks return error code 2007-07-20 08:02:11 -04:00
sata_sx4.c [libata] Clean up driver udma_mask initializers 2007-07-09 12:17:35 -04:00
sata_uli.c libata: make ->scr_read/write callbacks return error code 2007-07-20 08:02:11 -04:00
sata_via.c libata: make ->scr_read/write callbacks return error code 2007-07-20 08:02:11 -04:00
sata_vsc.c libata: make ->scr_read/write callbacks return error code 2007-07-20 08:02:11 -04:00
sis.h libata: PATA-mode fixes for sis_sata 2007-07-02 10:17:42 -04:00