Correct bug that caused the completed "recovery" scb to have its
authorPeter Avalos <pavalos@dragonflybsd.org>
Sat, 7 Jul 2007 00:28:32 +0000 (00:28 +0000)
committerPeter Avalos <pavalos@dragonflybsd.org>
Sat, 7 Jul 2007 00:28:32 +0000 (00:28 +0000)
timer reset rather than the timer of an SCB still pending on the
controller after recovery completed.  This should correct timeout
loops.

Obtained-from: FreeBSD

sys/dev/disk/aic7xxx/aic79xx_osm.c
sys/dev/disk/aic7xxx/aic7xxx_osm.c

index e627301..00cfa4c 100644 (file)
@@ -31,8 +31,8 @@
  *
  * $Id: //depot/aic7xxx/freebsd/dev/aic7xxx/aic79xx_osm.c#35 $
  *
- * $FreeBSD: src/sys/dev/aic7xxx/aic79xx_osm.c,v 1.21 2005/02/16 18:09:41 gibbs Exp $
- * $DragonFly: src/sys/dev/disk/aic7xxx/aic79xx_osm.c,v 1.18 2007/07/06 06:26:59 pavalos Exp $
+ * $FreeBSD: src/sys/dev/aic7xxx/aic79xx_osm.c,v 1.22 2005/09/22 05:01:37 gibbs Exp $
+ * $DragonFly: src/sys/dev/disk/aic7xxx/aic79xx_osm.c,v 1.19 2007/07/07 00:28:32 pavalos Exp $
  */
 
 #include "aic79xx_osm.h"
@@ -269,7 +269,8 @@ ahd_done(struct ahd_softc *ahd, struct scb *scb)
                        LIST_FOREACH(list_scb,
                                     &ahd->pending_scbs, pending_links) {
 
-                               aic_scb_timer_reset(scb, aic_get_timeout(scb));
+                               aic_scb_timer_reset(list_scb,
+                                                   aic_get_timeout(scb));
                        }
 
                        ahd_print_path(ahd, scb);
index cade070..0085ddc 100644 (file)
@@ -30,8 +30,8 @@
  *
  * $Id: //depot/aic7xxx/freebsd/dev/aic7xxx/aic7xxx_osm.c#20 $
  *
- * $FreeBSD: src/sys/dev/aic7xxx/aic7xxx_osm.c,v 1.41 2004/08/17 00:14:31 gibbs Exp $
- * $DragonFly: src/sys/dev/disk/aic7xxx/aic7xxx_osm.c,v 1.16 2007/07/06 04:56:22 pavalos Exp $
+ * $FreeBSD: src/sys/dev/aic7xxx/aic7xxx_osm.c,v 1.43 2005/09/22 05:01:37 gibbs Exp $
+ * $DragonFly: src/sys/dev/disk/aic7xxx/aic7xxx_osm.c,v 1.17 2007/07/07 00:28:32 pavalos Exp $
  */
 
 #include "aic7xxx_osm.h"
@@ -385,7 +385,8 @@ ahc_done(struct ahc_softc *ahc, struct scb *scb)
                         LIST_FOREACH(list_scb, &ahc->pending_scbs,
                                      pending_links) {
 
-                               aic_scb_timer_reset(scb, aic_get_timeout(scb));
+                               aic_scb_timer_reset(list_scb,
+                                                   aic_get_timeout(scb));
                        }
 
                        ahc_print_path(ahc, scb);