Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 May 1998 14:01:47 -0700
From:      Mike Smith <mike@smith.net.au>
To:        Tetsuro FURUYA <ht5t-fry@asahi-net.or.jp>
Cc:        robinson@public.bta.net.cn, freebsd-stable@FreeBSD.ORG
Subject:   Re: Bug in wd driver 
Message-ID:  <199805272101.OAA01902@dingo.cdrom.com>
In-Reply-To: Your message of "Thu, 28 May 1998 05:45:07 %2B0900." <199805272045.FAA17668@dilemma.tf.or.jp> 

next in thread | previous in thread | raw e-mail | index | archive | help
> 
> My kernel has kernel-debugger installed in it.
> So, listening to the hamming sound of wd0 drive, and when wd drive
> is hangupped, invoke kernel-debugger by typing ESC-ctrl-alt keys.
> A while after stopping of disk access, type 'c' or 'continue',
> and go back to bad144 or fsck.
> Several attempts may complete the identification of bad clusters.
> As for my machine, this was worked.

This would tend to imply that the timeout value is too short.

Can you try increasing the timeout counter and provoking your disk?

In sys/i386/isa/wd.c, in this section:

        /*
         * Schedule wdtimeout() to wake up after a few seconds.  Retrying
         * unmarked bad blocks can take 3 seconds!  Then it is not good that
         * we retry 5 times.
         *
         * On the first try, we give it 10 seconds, for drives that may need
         * to spin up.
         *
         * XXX wdtimeout() doesn't increment the error count so we may loop
         * forever.  More seriously, the loop isn't forever but causes a
         * crash.
         *
         * TODO fix b_resid bug elsewhere (fd.c....).  Fix short but positive
         * counts being discarded after there is an error (in physio I
         * think).  Discarding them would be OK if the (special) file offset
         * was not advanced.
         */
        if (wdtab[ctrlr].b_errcnt == 0)
                du->dk_timeout = 1 + 10;
        else
                du->dk_timeout = 1 + 3;


Increase the 10 and 3 values (first and subsequent timeouts).  Try 
raising them lots, then come down slowly.

Also, what are the status and error values that you see in the 
"interrupt timeout" messages?

-- 
\\  Sometimes you're ahead,       \\  Mike Smith
\\  sometimes you're behind.      \\  mike@smith.net.au
\\  The race is long, and in the  \\  msmith@freebsd.org
\\  end it's only with yourself.  \\  msmith@cdrom.com



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199805272101.OAA01902>