From: Andrew Morton Life's too short... Cc: Tejun Heo Cc: Jeff Garzik Signed-off-by: Andrew Morton --- drivers/scsi/libata-core.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff -puN drivers/scsi/libata-core.c~libata-reduce-timeouts drivers/scsi/libata-core.c --- devel/drivers/scsi/libata-core.c~libata-reduce-timeouts 2006-05-19 01:23:50.000000000 -0700 +++ devel-akpm/drivers/scsi/libata-core.c 2006-05-19 01:34:39.000000000 -0700 @@ -81,6 +81,10 @@ int libata_fua = 0; module_param_named(fua, libata_fua, int, 0444); MODULE_PARM_DESC(fua, "FUA support (0=off, 1=on)"); +static int ata_qc_timeout = ATA_TMOUT_INTERNAL / HZ; +module_param(ata_qc_timeout, int, 0444); +MODULE_PARM_DESC(ata_qc_timeout, "Set ata queued command timeout (seconds)"); + MODULE_AUTHOR("Jeff Garzik"); MODULE_DESCRIPTION("Library module for ATA devices"); MODULE_LICENSE("GPL"); @@ -1042,7 +1046,7 @@ unsigned ata_exec_internal(struct ata_de spin_unlock_irqrestore(&ap->host_set->lock, flags); - rc = wait_for_completion_timeout(&wait, ATA_TMOUT_INTERNAL); + rc = wait_for_completion_timeout(&wait, ata_qc_timeout); ata_port_flush_task(ap); @@ -5556,6 +5560,7 @@ int ata_pci_device_resume(struct pci_dev static int __init ata_init(void) { + ata_qc_timeout *= HZ; ata_wq = create_workqueue("ata"); if (!ata_wq) return -ENOMEM; _