[comp.os.minix] Hard Disk Problems

ast@botter.UUCP (04/23/87)

The person who wrote the hard disk drivers is going to take a look and see
if some of the problems can be fixed.  The new driver will be posted when
it is done.

Nevertheless, those drivers only handle two specific controllers, the DTC
for the AT and whatever the XT has.  Other controllers will continue to
be rejected.  What is probably needed is for someone to take one of the
two drivers, remove all the guts of it (the part that does the disk I/O),
leave the interface to the rest of the system, and write a tiny assembly
code routine to call the BIOS to do the disk I/O.  The performance will be
poor, since it will just wait, but for a lot of people with nonstandard
disks, this may be a good way to get bootstrapped.

I have already been publicly excoriated for my ignorance of MS-DOS.  It is
true and, worse yet, I am not even ashamed.  I don't know much more about
the BIOS.  Do we have a volunteer to carry out the above project?  It 
probably isn't much work for someone who knows the BIOS well and has studied
either driver for an evening.  

Andy Tanenbaum

TCarlin@bco-multics.arpa (06/30/87)

I have a NCR AT compatable with 8mhz clock and 20 meg drive.  After
loading MINIX on to a partition, I got the error message "Winchester
wouldn't reset, drive busy" usually followed by file system corruption
when doing a small copy.  Looking at a bios listing I found that
at_wini.c wasn't waiting long enough after a disk error to let the
controller reset.  I modified the module "drive_busy()" to loop through
MAX_WIN_RETRY*1000 (1,000,000) times instead of just MAX_WIN_RETRY
times.  Worked very well.  Haven't got the problem of drive busy again.
It did show up the fact I have a few bad spots on my hard disk.  When I
get a i/o error I just move the file it was writing to a directory on
the hard disk called "badblocks" to keep all the bad blocks together.
MINIX as well as UNIX seems to want totally error free media as neither
has very good if any error correction on hard disk such as marking the
bad block.  Maybe I will look into adding that to MINIX in the spirit of
the thing.  I posted this once before but fat fingered info-minix to
info-unix and sent it to the wrong list.  Terry Carlin Honeywell Bull
Inc.  617 895-3209

sas@bcd-dyn.UUCP (432 2370.00) (02/17/88)

I'm still having problems with my western digital wd1002s-wx2 hard disk
and tandon tm262 combination.  Is anyone running MINIX on hard disk #2?
Using drivers /dev/hd5-9?  Using standard 1.2 Minix, I can only get the
os to recognize the drive as /dev/hd5, it doesn't even access the disk 
when I try to use partitions 6-9.  Using hd5, I can only mkfs about 1/2
of the 20 meg disk.  I fixed the AUTO_CONFIG definition, but my controller
isn't an autoconfig version, so that doesn't help, although that version
does allow fsck to find partitions 6-9 and "check" them.  When I try to
mkfs on partitions 6-9, it says "error in line 1", cannot access block 1.
I'm sure I partitioned it correctly, as I've used DOS FDISK (3.2), Minix
1.2 Fdisk, Speedstor, and others, with identical results.  I think the 
problem is related to the fact that I'm using drive D, but not sure.  Any
ideas?  
-- 
===============================================================================
Scott A. Sharkey                        UUCP: cbosgd!osu-cis!bcd-dyn!sas
Battelle Memorial Institute             USPS: 505 King Ave., Columbus, OH  43201
(614) 424-4067                          Who?  Me?  I Just work here!

rmtodd@uokmax.UUCP (Richard Michael Todd) (02/20/88)

In article <998@bcd-dyn.UUCP> sas@bcd-dyn.UUCP (432 2370.00) writes:
>I'm still having problems with my western digital wd1002s-wx2 hard disk
>and tandon tm262 combination.  Is anyone running MINIX on hard disk #2?
Yes and no.  I've got the second hard disk partitioned into two partitions,
18.5M for DOS and 1.5M for MINIX.  Currently I'm not doing anything much
with the MINIX partition, but I did do a mkfs on /dev/hd7 and it worked
fine.  I should note that there is a bug in the wd_wini.c driver code, as
I mention below.  I'm using a WD controller with two Seagate ST225 drives.

>Using drivers /dev/hd5-9?  Using standard 1.2 Minix, I can only get the
>os to recognize the drive as /dev/hd5, it doesn't even access the disk 
>when I try to use partitions 6-9.  Using hd5, I can only mkfs about 1/2
>of the 20 meg disk.  I fixed the AUTO_CONFIG definition, but my controller
>isn't an autoconfig version, so that doesn't help, although that version

There is a bug in the code to handle AUTO_CONFIG in a two-drive system.
The code in wd_wini.c gets the info on the configuration of drive C from
the first sector on the drive (the info is in a 16 byte table).  One would
expect that when the BIOS variable for "# of hard drives" was two, it would
proceed to read the first sector of drive D to get its config information.
It doesn't. It instead copies the next 16 bytes of the drive C config sector
(the ones after the table for drive C) into the structure for drive D.  It
thus uses garbage values for the drive D parameters and the attempt to
read drive D's partition table using these bogus parameters causes a
kernel panic.  I suspect that the intent of the code's author was to
handle WD's "logical drive" scheme, where a single physical drive is
partitioned into two logical drives, and apparently the config. info on
both logical drives is stored in the first sector of the physical drive.
But when you have two physical hard disk drives, the code bombs.  I took the
easy way out and patched wd_wini.c so that the parameters used for drive
D were simply copied from those for C.  I can get away with that since
my two drives are both ST225s and thus have the same parameters.
  Obviously this isn't quite the problem you're experiencing, since you
don't have an autoconfig controller and your system will at least boot,
even though it doesn't correctly access drive D.  However it shouldn't be
two surprising that if they got the auto_config code wrong, the code
for the non-auto-config case might be broken as well.  
  One thing you might do is install debugging code in wd_wini.c to see
just exactly what the driver thinks the drive parameters and partition
tables are for both drives.  There's an array of structures indexed
by hard drive number for drive parameters and an array of structures indexed
by partition number for the partition info.  Sorry I don't remember what
the names are, but they're fairly easy to find.  
  As I said, I haven't used drive D extensively under MINIX, but I did 
check to see that "od -c /dev/hd5", "od -c /dev/hd6", etc., did read
the right portions of the hard disk, and I did successfully mkfs on /dev/hd7.
--------------------------------------------------------------------------
Richard Todd
USSnail:820 Annie Court,Norman OK 73069
UUCP: {allegra!cbosgd|ihnp4}!occrsh!uokmax!rmtodd