NetBSD Problem Report #13275

Received: (qmail 3783 invoked from network); 21 Jun 2001 14:39:02 -0000
Message-Id: <200106211436.f5LEaPC00470@zorkmid.mit.edu>
Date: Thu, 21 Jun 2001 10:36:25 -0400 (EDT)
From: John Hawkinson <jhawk@mit.edu>
Reply-To: jhawk@mit.edu
To: gnats-bugs@gnats.netbsd.org
Subject: IDE retries should be disableable
X-Send-Pr-Version: 3.95

>Number:         13275
>Category:       kern
>Synopsis:       IDE retries should be disableable
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    bouyer
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Jun 21 14:40:02 +0000 2001
>Closed-Date:    
>Last-Modified:  Fri Jun 25 15:52:55 +0000 2004
>Originator:     John Hawkinson
>Release:        -current of 21 May 2001
>Organization:
MIT
>Environment:

System: NetBSD zorkmid.mit.edu 1.5U NetBSD 1.5U (ZORKMID-$Revision: 1.10 $) #103: Mon May 21 21:10:47 EDT 2001 jhawk@zorkmid.mit.edu:/usr/local/netbsd-current/src/sys/arch/i386/compile/ZORKMID i386


>Description:
    On a machine with a number of known uncorrectable bad blocks on
an IDE disk, it is rather irritating to have the kernel retry to read them
5 times, when each retry involves a lengthy delay, and you know that it is
never going to succeed.
>How-To-Repeat:
	Inspecting sys/dev/ata/wd.c, it appears to be hardcoded to retry
five times:

   106  #define WDIORETRIES     5       /* number of retries before giving up */
...
   592  retry:          /* Just reset and retry. Can we do more ? */
   593                  wdc_reset_channel(wd->drvp);
   594                  diskerr(bp, "wd", errbuf, LOG_PRINTF,
   595                      wd->sc_wdc_bio.blkdone, wd->sc_dk.dk_label);
   596                  if (wd->retries++ < WDIORETRIES) {
   597                          printf(", retrying\n");
   598                          callout_reset(&wd->sc_restart_ch, RECOVERYTIME,
   599                              wdrestart, wd);
   600                          return;
   601                  }
   602                  printf("\n");


It would be desirable to change this behavior, though I'm not certain how.
At the very least, it should be easily patchable, so perhaps someone could
just patch "wdioretries" to 0 in ddb.

It would also be reasonable to expose this to the user. Perhaps by a sysctl,
or some other mechanism?

Is there prior art from other OSs [or even Linux] in this area?

>Fix:

[Removed, because it's just silly.  - mycroft]

>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: kern-bug-people->bouyer 
Responsible-Changed-By: bouyer 
Responsible-Changed-When: Mon Apr 7 10:01:35 PDT 2003 
Responsible-Changed-Why:  
I guess this is for me 
>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.