Author: mav
Date: Mon Oct 26 11:20:14 2009
New Revision: 198486
URL: http://svn.freebsd.org/changeset/base/198486

Log:
  Increase ATA command timeouts. Some drives need more then 5s to spin-up.
  
  PR:           kern/111023

Modified:
  head/sys/dev/ata/ata-disk.c
  head/sys/dev/ata/ata-queue.c
  head/sys/dev/ata/ata-raid.c
  head/sys/dev/ata/atapi-cd.c

Modified: head/sys/dev/ata/ata-disk.c
==============================================================================
--- head/sys/dev/ata/ata-disk.c Mon Oct 26 11:00:37 2009        (r198485)
+++ head/sys/dev/ata/ata-disk.c Mon Oct 26 11:20:14 2009        (r198486)
@@ -230,7 +230,7 @@ ad_spindown(void *priv)
     }
     request->dev = dev;
     request->flags = ATA_R_CONTROL;
-    request->timeout = 5;
+    request->timeout = 10;
     request->retries = 1;
     request->callback = ad_power_callback;
     request->u.ata.command = ATA_STANDBY_IMMEDIATE;
@@ -265,7 +265,7 @@ ad_strategy(struct bio *bp)
        request->timeout = 31;
     }
     else {
-       request->timeout = 5;
+       request->timeout = 10;
     }
     request->retries = 2;
     request->data = bp->bio_data;
@@ -468,7 +468,7 @@ ad_set_geometry(device_t dev)
     request->u.ata.count = 0;
     request->u.ata.feature = 0;
     request->flags = ATA_R_CONTROL | ATA_R_QUIET;
-    request->timeout = 5;
+    request->timeout = 10;
     request->retries = 0;
     ata_queue_request(request);
     if (request->status & ATA_S_ERROR)
@@ -487,7 +487,7 @@ ad_set_geometry(device_t dev)
     request->u.ata.count = 1;
     request->u.ata.feature = 0;
     request->flags = ATA_R_CONTROL;
-    request->timeout = 5;
+    request->timeout = 10;
     request->retries = 0;
     ata_queue_request(request);
     if (request->status & ATA_S_ERROR)

Modified: head/sys/dev/ata/ata-queue.c
==============================================================================
--- head/sys/dev/ata/ata-queue.c        Mon Oct 26 11:00:37 2009        
(r198485)
+++ head/sys/dev/ata/ata-queue.c        Mon Oct 26 11:20:14 2009        
(r198486)
@@ -135,7 +135,7 @@ ata_controlcmd(device_t dev, u_int8_t co
            atadev->spindown_state = 0;
            request->timeout = 31;
        } else {
-           request->timeout = 5;
+           request->timeout = 10;
        }
        request->retries = 0;
        ata_queue_request(request);
@@ -389,7 +389,7 @@ ata_completed(void *context, int dummy)
            request->bytecount = sizeof(struct atapi_sense);
            request->donecount = 0;
            request->transfersize = sizeof(struct atapi_sense);
-           request->timeout = 5;
+           request->timeout = 10;
            request->flags &= (ATA_R_ATAPI | ATA_R_QUIET | ATA_R_DEBUG);
            request->flags |= (ATA_R_READ | ATA_R_AT_HEAD | ATA_R_REQUEUE);
            ATA_DEBUG_RQ(request, "autoissue request sense");

Modified: head/sys/dev/ata/ata-raid.c
==============================================================================
--- head/sys/dev/ata/ata-raid.c Mon Oct 26 11:00:37 2009        (r198485)
+++ head/sys/dev/ata/ata-raid.c Mon Oct 26 11:20:14 2009        (r198486)
@@ -273,7 +273,7 @@ ata_raid_flush(struct bio *bp)
        request->u.ata.lba = 0;
        request->u.ata.count = 0;
        request->u.ata.feature = 0;
-       request->timeout = 1;
+       request->timeout = 10;
        request->retries = 0;
        request->flags |= ATA_R_ORDERED | ATA_R_DIRECT;
        ata_queue_request(request);
@@ -4371,7 +4371,7 @@ ata_raid_init_request(device_t dev, stru
        return NULL;
     }
     request->dev = dev;
-    request->timeout = 5;
+    request->timeout = 10;
     request->retries = 2;
     request->callback = ata_raid_done;
     request->driver = rdp;

Modified: head/sys/dev/ata/atapi-cd.c
==============================================================================
--- head/sys/dev/ata/atapi-cd.c Mon Oct 26 11:00:37 2009        (r198485)
+++ head/sys/dev/ata/atapi-cd.c Mon Oct 26 11:20:14 2009        (r198486)
@@ -700,7 +700,7 @@ acd_geom_access(struct g_provider *pp, i
        request->dev = dev;
        bcopy(ccb, request->u.atapi.ccb, 16);
        request->flags = ATA_R_ATAPI;
-       request->timeout = 5;
+       request->timeout = 10;
        ata_queue_request(request);
        if (!request->error &&
            (request->u.atapi.sense.key == 2 ||
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to