When the outcome of the watchdog processing is a reset, do not bother checking
authormiod <miod@openbsd.org>
Wed, 14 Jan 2015 21:14:49 +0000 (21:14 +0000)
committermiod <miod@openbsd.org>
Wed, 14 Jan 2015 21:14:49 +0000 (21:14 +0000)
further pending requests, since they will be forcefully failed by the reset
routine.

sys/arch/sparc/dev/xd.c
sys/arch/sparc/dev/xy.c

index 36f0537..8d1c119 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: xd.c,v 1.67 2015/01/14 21:13:46 miod Exp $    */
+/*     $OpenBSD: xd.c,v 1.68 2015/01/14 21:14:49 miod Exp $    */
 /*     $NetBSD: xd.c,v 1.37 1997/07/29 09:58:16 fair Exp $     */
 
 /*
@@ -2088,8 +2088,10 @@ xdc_tick(arg)
                    XD_STATE(xdcsc->reqs[lcv].mode) == XD_SUB_DONE)
                        continue;
                xdcsc->reqs[lcv].ttl--;
-               if (xdcsc->reqs[lcv].ttl == 0)
+               if (xdcsc->reqs[lcv].ttl == 0) {
                        reset = 1;
+                       break;  /* we're going to fail all requests anyway */
+               }
        }
        if (reset) {
                printf("%s: watchdog timeout\n", xdcsc->sc_dev.dv_xname);
index 3be42a1..e776a59 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: xy.c,v 1.64 2015/01/14 21:13:46 miod Exp $    */
+/*     $OpenBSD: xy.c,v 1.65 2015/01/14 21:14:49 miod Exp $    */
 /*     $NetBSD: xy.c,v 1.26 1997/07/19 21:43:56 pk Exp $       */
 
 /*
@@ -1897,8 +1897,10 @@ xyc_tick(arg)
                    XY_STATE(xycsc->reqs[lcv].mode) == XY_SUB_DONE)
                        continue;
                xycsc->reqs[lcv].ttl--;
-               if (xycsc->reqs[lcv].ttl == 0)
+               if (xycsc->reqs[lcv].ttl == 0) {
                        reset = 1;
+                       break;  /* we're going to fail all requests anyway */
+               }
        }
        if (reset) {
                printf("%s: watchdog timeout\n", xycsc->sc_dev.dv_xname);