Give the drive a little bit more time to complete the STANDBY IMMED command.
authorkettenis <kettenis@openbsd.org>
Thu, 22 Jul 2010 21:40:46 +0000 (21:40 +0000)
committerkettenis <kettenis@openbsd.org>
Thu, 22 Jul 2010 21:40:46 +0000 (21:40 +0000)
The ATA spec seems to suggest it may take up to 30s.  This seems a little bit
long.  To quote Theo: "by that time some drives have probably parked their own
heads in boredom".  But it shouldn't hurt unless your drive is seriously
broken.  Makes some laptops suspend much better.

ok deraadt@

sys/dev/ata/wd.c

index e8be252..1f85ff6 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: wd.c,v 1.86 2010/07/22 18:10:37 mlarkin Exp $ */
+/*     $OpenBSD: wd.c,v 1.87 2010/07/22 21:40:46 kettenis Exp $ */
 /*     $NetBSD: wd.c,v 1.193 1999/02/28 17:15:27 explorer Exp $ */
 
 /*
@@ -1231,7 +1231,7 @@ wd_standby(struct wd_softc *wd, int flags)
        } else {
                wdc_c.flags = AT_WAIT;
        }
-       wdc_c.timeout = 1000; /* 1s timeout */
+       wdc_c.timeout = 30000; /* 30s timeout */
        if (wdc_exec_command(wd->drvp, &wdc_c) != WDC_COMPLETE) {
                printf("%s: standby command didn't complete\n",
                    wd->sc_dev.dv_xname);