Subject: port-i386/2336: WD dump routines fail recalibrating some drives
To: None <gnats-bugs@NetBSD.ORG>
From: None <pete@demon.net>
List: netbsd-bugs
Date: 04/16/1996 13:27:26
>Number:         2336
>Category:       port-i386
>Synopsis:       WD dump routines fail recalibrating some drives
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    gnats-admin (GNATS administrator)
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Apr 16 08:50:01 1996
>Last-Modified:
>Originator:     Pete Bentley
>Organization:
	Demon Internet
>Release:        NetBSD-1.1 through Current-16Apr96
>Environment:
	
System: NetBSD chico.eng.demon.net 1.1 NetBSD 1.1 (PETE) #68: Sat Apr 13 14:18:08 BST 1996 pete@chico.eng.demon.net:/src/NetBSD/1.1/src/sys/arch/i386/compile/PETE i386


>Description:
Before actually writing data, wddump() attempts to recalibrate the drive
by sending a WDCC_RECAL command to it and waiting for it to some ready
again. With some drives (eg ST51080A) the calibrate operation appears to
fail and so no dump gets written
>How-To-Repeat:
reboot -d on a machine with a suitable IDE drive
>Fix:
No idea on the fix (longer timeout, maybe?) I work around it with this
cheesey patch which allows me to disable the recalibrate operation from
the kernel config file:-

--- /src/NetBSD/current/src/sys/dev/isa/wd.c    Mon Apr 15 15:02:01 1996
+++ wd.c        Tue Apr 16 13:18:03 1996
@@ -1499,6 +1499,7 @@
        blkno += lp->d_partitions[part].p_offset;
 
        /* Recalibrate, if first dump transfer. */
+#ifndef WD_DUMP_NORECAL
        if (wddumprecalibrated == 0) {
                wddumprecalibrated = 1;
                if (wdcommandshort(wdc, wd->sc_drive, WDCC_RECAL) != 0 ||
@@ -1508,6 +1509,7 @@
                        return EIO;
                }
        }
+#endif
    
        while (nblks > 0) {
                daddr_t xlt_blkno = blkno;

>Audit-Trail:
>Unformatted: