(2.0.37pre4) Silent corruption of ATAPI CD-ROM data!

Alex Butche (linkern@cocoa.demon.co.uk)
Sat, 9 Jan 1999 15:21:19 +0000 (GMT)


(Apologies if I've ended up sending this to the list twice - mail spool
booboo my end...)

Hi -

I've just added a new ATAPI CD-R drive to my system and, having burnt a CD
of an old partition I'm going to wipe, I thought I'd run a recursive cmp to
check that the files were actually OK:

[root@cocoa system]# cmp -c ctreestd.dll /cdrom/windows/system/ctreestd.dll
ctreestd.dll /cdrom/windows/system/ctreestd.dll differ: char 34966, line 214
is 3 ^C 23 ^S
[root@cocoa system]# cmp -c dib.drv /cdrom/windows/system/dib.drv
dib.drv /cdrom/windows/system/dib.drv differ: char 5, line 1 is 2 ^B 6
^F
[root@cocoa system]# cmp -c dinput.dll /cdrom/windows/system/dinput.dll
dinput.dll /cdrom/windows/system/dinput.dll differ: char 21717, line 34 is
30 ^X 70 8
[root@cocoa system]# cmp -c dzip32.dll /cdrom/windows/system/dzip32.dll
dzip32.dll /cdrom/windows/system/dzip32.dll differ: char 2069, line 5 is 123
S 63 3
[root@cocoa system]# cmp -c iccvid.drv /cdrom/windows/system/iccvid.drv
iccvid.drv /cdrom/windows/system/iccvid.drv differ: char 1590, line 5 is 1
^A 326 M-V
[root@cocoa system]# cmp -c iomega~1.dll /cdrom/windows/system/iomega~1.dll
iomega~1.dll /cdrom/windows/system/iomega~1.dll differ: char 5438, line 8 is
141 a 146 f
[root@cocoa system]# cmp -c mcm.dll /cdrom/windows/system/mcm.dll
mcm.dll /cdrom/windows/system/mcm.dll differ: char 92056, line 161 is 0 ^@
60 0
[root@cocoa system]# cmp -c mfc40.dll /cdrom/windows/system/mfc40.dll
mfc40.dll /cdrom/windows/system/mfc40.dll differ: char 22539, line 21 is 205
M-^E 105 E

Hmmm... a bunch of single byte errors. If I umount the CD and remount, those
files will cmp OK:

[root@cocoa /dosd]# umount /cdrom
[root@cocoa /dosd]# mount -t iso9660 -o nojoliet /dev/hdd /cdrom
mount: block device /dev/hdd is write-protected, mounting read-only
[root@cocoa system]# cmp -c mfc40.dll /cdrom/windows/system/mfc40.dll
[root@cocoa system]#

If I recheck the file without remounting the differences are still there
(presumably the bad copy is now cached?).

Presumably my memory would be a suspect, but I've not experienced any Sig11's
whilst compiling the kernel (or anything else untoward, for that matter) and
it is good quality Samsung PC100 memory that I'm only running at 66MHz on an
Asus P2B motherboard. My system was *extremely* lightly loaded whilst
performing these cmps.

My IDE cables are also new and typical quality, though unshielded.
I cable my drives as follows:

/-----------------------------|-------|
Motherboard Slave Master

QUESTIONS:
Any ideas on what is causing this?

How can I flush Linux' buffer-cache so as to eliminate that as a possibility?
(I would follow this with another cmp)

I think it's safe to assume that the data on the CD is actually OK,
otherwise I would get consistent read errors, and presumably, ide-cd would
report various unrecoverable errors, right?

My EIDE/ATAPI config follows...

/dev/hda:

Model=IBM-DHEA-36481, FwRev=HP6OA20C, SerialNo=SG0SGFM7540
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
RawCHS=12592/16/63, TrkSize=0, SectSize=0, ECCbytes=28
BuffType=3(DualPortCache), BuffSize=472kB, MaxMultSect=16, MultSect=16
DblWordIO=no, maxPIO=2(fast), DMA=yes, maxDMA=2(fast)
CurCHS=790/255/63, CurSects=12692736, LBA=yes, LBA=yes, LBAsects=12692736
tDMA={min:120,rec:120}, DMA modes: sword0 sword1 sword2 mword0 mword1
mword2
IORDY=on/off, tPIO={min:240,w/IORDY:120}, PIO modes: mode3 mode4
UDMA modes:

/dev/hdb:

Model=FUJITSU MPA3035ATU, FwRev=9517, SerialNo=01107498
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=6781/16/63, TrkSize=0, SectSize=0, ECCbytes=4
BuffType=0(?), BuffSize=0kB, MaxMultSect=32, MultSect=32
DblWordIO=no, maxPIO=2(fast), DMA=yes, maxDMA=0(slow)
CurCHS=847/128/63, CurSects=6835952, LBA=yes, LBA=yes, LBAsects=6835952
tDMA={min:120,rec:120}, DMA modes: mword0 mword1 mword2
IORDY=yes, tPIO={min:240,w/IORDY:120}, PIO modes: mode3 mode4
UDMA modes:

/dev/hdc:

Model=CR-4801TE, FwRev=1.05, SerialNo=
Config={ SpinMotCtl Removeable DTR<=5Mbs DTR>10Mbs nonMagnetic }
RawCHS=0/0/0, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=2(DualPort), BuffSize=0kB, MaxMultSect=0
DblWordIO=no, maxPIO=3(eide), DMA=yes, maxDMA=1(medium)
(maybe): CurCHS=0/0/0, CurSects=0, LBA=yes, LBA=yes, LBAsects=0
tDMA={min:150,rec:230}, DMA modes: ***sword2 **mword1
IORDY=on/off, tPIO={min:180,w/IORDY:180}, PIO modes: mode3

/dev/hdd:

Model=CREATIVE CD2422E, FwRev=M 1C20, SerialNo=
Config={ SpinMotCtl Removeable DTR<=5Mbs DTR>10Mbs nonMagnetic }
RawCHS=0/0/0, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=0(?), BuffSize=0kB, MaxMultSect=0
DblWordIO=no, maxPIO=3(eide), DMA=yes, maxDMA=1(medium)
(maybe): CurCHS=0/0/0, CurSects=0, LBA=yes, LBA=yes, LBAsects=0
tDMA={min:150,rec:150}, DMA modes: sword0 sword1 sword2 mword0 *mword1
IORDY=on/off, tPIO={min:180,w/IORDY:180}, PIO modes: mode3 mode4

Jan 6 20:33:45 cocoa kernel: ide: Intel 82371 (single FIFO) DMA Bus Mastering IDE
Jan 6 20:33:45 cocoa kernel: Controller on PCI bus 0 function 33
Jan 6 20:33:45 cocoa kernel: ide: timings == d277e377
Jan 6 20:33:45 cocoa kernel: ide0: BM-DMA at 0xd800-0xd807
Jan 6 20:33:45 cocoa kernel: ide1: BM-DMA at 0xd808-0xd80f
Jan 6 20:33:45 cocoa kernel: hda: IBM-DHEA-36481, 6197MB w/472kB Cache, CHS=790/255/63, UDMA
Jan 6 20:33:45 cocoa kernel: hdb: FUJITSU MPA3035ATU, 3337MB w/0kB Cache, CHS=847/128/63, UDMA
Jan 6 20:33:45 cocoa kernel: hdc: CR-4801TE, ATAPI drive - enabling SCSI emulation
Jan 6 20:33:45 cocoa kernel: ATAPI overlap supported: No
Jan 6 20:33:45 cocoa kernel: hdd: CREATIVE CD2422E, ATAPI CDROM drive
Jan 6 20:33:45 cocoa kernel: ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Jan 6 20:33:45 cocoa kernel: ide1 at 0x170-0x177,0x376 on irq 15
Jan 6 20:33:45 cocoa kernel: md driver 0.36.3 MAX_MD_DEV=4, MAX_REAL=8
Jan 6 20:33:45 cocoa kernel: scsi0 : SCSI host adapter emulation for IDE ATAPI devices
Jan 6 20:33:45 cocoa kernel: scsi : 1 host.
Jan 6 20:33:45 cocoa kernel: Vendor: MITSUMI Model: CR-4801TE Rev: 1.05
Jan 6 20:33:45 cocoa kernel: Type: CD-ROM ANSI SCSI revision: 02
Jan 6 20:33:45 cocoa kernel: Detected scsi CD-ROM sr0 at scsi0, channel 0, id 0, lun 0
Jan 6 20:33:45 cocoa kernel: scsi : detected 1 SCSI cdrom total.

I'm passing hdc=ide-scsi to the kernel as a boot parameter. hda and hdb are
both using UDMA mode2, I've fixed hdc and hdd in the BIOS to only use PIO3,
as per the Mitsumi manual.

If there's any further info I can add, please ask!

Best Regards,
Alex.

-
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/