RE: Linux-1.3.89 / CD-Rom bug

Chel van Gennip, (chel@vangennip.nl)
Tue, 16 Apr 1996 22:40:49 +0200 (MESZ)


"Chel van Gennip," <chel@vangennip.nl> wrote:
>Linus Torvalds <torvalds@cs.helsinki.fi> wrote:
>>I made a 1.3.89 kernel that fixes
>>
>....
>> - iso9660 bugfix (probably the one that caused some problems for people with
>> some CD's..)
>....
>>Thanks for trying this out (you ARE going to try it out, aren't you??),
>
>I did, but I still see the strange CD-rom error:
>Test with SCSI CD-rom gives an error with gzip (tar xz ), no error if the
>file is loaded in the cache in advance with cat. Maybe related with block-
>size on read?. Tests on a IDE/ATAPI CD-rom give no errors (also different
>motherboard!).

I tried a new test to locate the place of the bug. I copied the whole
CD-rom to a partition on a SCSI disk and performd the test again, now on the
SCSI disk with the following result:

===================================================================
gennip:/tmp# umount /mnt
gennip:/tmp# mount -r -t iso9660 /dev/sda4 /mnt
gennip:/tmp# tar xzf /mnt/L*/S*/source/n/tcpip/N*5.tar*z
tar: Skipping to next file header...

gzip: stdin: invalid compressed data--crc error
tar: archive /mnt/Linux/Slackware/source/n/tcpip/NetKit-B-0.05.tar.gz EOF not on block boundary
gennip:/tmp# umount /mnt
gennip:/tmp# cat /mnt/L*/S*/source/n/tcpip/N*5.tar*z>/dev/null
cat: /mnt/L*/S*/source/n/tcpip/N*5.tar*z: No such file or directory
gennip:/tmp# mount -r -t iso9660 /dev/sda4 /mnt
gennip:/tmp# cat /mnt/L*/S*/source/n/tcpip/N*5.tar*z>/dev/null
gennip:/tmp# tar xzf /mnt/L*/S*/source/n/tcpip/N*5.tar*z
gennip:/tmp#

gennip:/tmp# cat /etc/mtab
/dev/hda6 / ext2 rw 1 1
/dev/hda7 /u ext2 rw 1 1
/dev/hda1 /dosc umsdos rw 1 1
/dev/sda1 /dosd umsdos rw 1 1
none /proc proc rw 1 1
/dev/scd0 /cdrom iso9660 ro 0 0
/dev/sda4 /mnt iso9660 ro 0 0
===========================================================================
So we now have the following matrix:
IDE/ATAPI CD-rom -> OK
AHA1542/Sony CD-rom -> error
AHA1542/DEC DSP -> error
Additional: cat >/dev/null reads without errors to the cache

So I think the error is somewhere in the read-ahead mechanism in combination
with the AHA1542 driver. Files on CD-Rom normally are quite consecutive,
so read ahead mechanisms could generate _long_ transfers. The length of the
transfers can depend on the blocksize in the read call's. Long transfers
can conflict with existing DMA limitations on the intel platforms?
Anyway the IDE CD-rom uses PIO and therefore has no problems with these
kind of limitations.

Unfortunately I am not so familiar with the driver code involved.

I hope this helps to locate the problem, as these tests indicate problems
can occur on SCSI drives too, and therefore are more dangerous.

Chel
---------------------------------------------------------------------------
Chel van Gennip | Spechtstraat 15 | 2623 GP Delft | The Netherlands
Tel: +31 15 2567783 | Fax: +31 15 2610985 | E-Mail: chel@vangennip.nl
---------------------------------------------------------------------------