Re: Linux 2.2.x corrupting ext2 partitions (seagate medlist hdd)

Mark Lord (mlord@pobox.com)
Thu, 01 Apr 1999 09:22:49 -0500


Chris wrote:
...
> hda: ST36422A, 6103MB w/256kB Cache, CHS=778/255/63, UDMA
...
> EXT2-fs error (device 03:03): ext2_check_descriptors: Inode bitmap for group 1 not in group (block 0)!
...

Based on my own experiences and those of others,

>>> Seagate Medalist ATA drives are BELOW SPEC units <<<

Do NOT purchase them.
[you'd think I'd learned to avoid Seagate back in the "stiction" days..]

The problem appears to be very mariginal (or out-of-spec) timings
for UDMA operation.

They only work with REALLY short cables (10-11 inches seems okay),
and they just plain DO NOT like UDMA1 or UDMA2.

Mine work fine with UDMA0, most of the time.

If you are clever with chipsets, then you can modify the startup
scripts to select UDMA0 or ordinary DMA2 (same speed) before
turning on DMA mode.

Below is what I do in /etc/rc.d/rc.local for my Promise Ultra33 board.
You'll have to figure out something similar for your VP_IDE,
replacing the "echo" line with the appropriate equivalent.

#!/bin/sh
# Reprogram Promise-Ultra33 & Seagate disks hde|hdg for safer operation:
if [ -e /proc/ide/ide2/config ]; then
# Check for Promise Ultra33 IDE controller:
chipset=`awk '{print $7 $9; exit 0}'< /proc/ide/ide2/config`
if [ "${chipset}" = "105a4d33" ]; then
## Force a sync and wait for it:
sync
hdparm -qI /dev/hd[eg] >/dev/null
## Set chipset to UDMA0/PIO4:
echo "R60:004363f0 R68:004363f0" >/proc/ide/ide2/config
## Set drives to UDMA0:
if [ -e /proc/ide/hde ]; then
hdparm -qX64 -qu1 -qd1 -qW1 -qA1 -qS250 /dev/hde
fi
if [ -e /proc/ide/hdg ]; then
hdparm -qX64 -qu1 -qd1 -qW1 -qA1 -qS250 /dev/hdg
fi
fi
fi

You will need to figure out a replacement for the "echo" line,
based on the chipset documentation for the VP_IDE.

Good Luck.

-- 
mlord@pobox.com

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/