linux/drivers/ata
Tejun Heo 1ae463171c libata: improve SCSI scan failure handling
SCSI scan may fail due to memory allocation failure even if EH is not
in progress.  Due to use of GFP_ATOMIC in SCSI scan path, allocation
failure isn't too rare especially while probing multiple devices at
once which is the case when a bunch of devices are connected to PMP.

This patch moves SCSI scan failure detetion logic from
ata_scsi_hotplug() to ata_scsi_scan_host() and implement synchronous
scan behavior.  The synchronous path sleeps briefly and repeats SCSI
scan if some devices aren't attached properly.  It contains robust
retry loop to minimize the chance of device misdetection during boot
and falls back to async retry if everything fails.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-07-20 08:26:25 -04:00
..
Kconfig pata_hpt3x3: major reworking and testing 2007-07-10 21:30:33 -04:00
Makefile libata-acpi: s/CONFIG_SATA_ACPI/CONFIG_ATA_ACPI/ 2007-05-11 18:12:42 -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
libata-acpi.c libata-acpi: implement _GTM/_STM support 2007-07-09 12:17:32 -04:00
libata-core.c libata: improve SCSI scan failure handling 2007-07-20 08:26:25 -04:00
libata-eh.c libata: quickly trigger SATA SPD down after debouncing failed 2007-07-20 08:19:06 -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: improve SCSI scan failure handling 2007-07-20 08:26:25 -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 Move libata to drivers/ata. 2006-08-10 07:31:37 -04:00
sata_qstor.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_sil24.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