Problem with reading CD-R/W written in TAO mode
I am using Mandrake kernel 2.4.18-13mdk (based on 2.4.19-pre7). There is strange problem in raw-reading some CD-R/Ws (e.g. to verify checksum like md5sum /dev/cdrom) reported by several people - read aborts with I/O error at the end.
Experimenting with different CD-R/Ws lead to conclusion that CD-Rs written in DAO are read correctly and those written in TAO (and possibly multisession) give an error. Printed CD-Rs never show any error. It does not seem to matter what program has been used to create CD - identical problem appears using mkisofs/cdrecord and Nero (I cannot verify DAO with cdrecord because it is not supported for my CDD-3610).
My first thought was that for some reason wrong CD size has been reported, so I added printk to cdrom_read_toc() to verify the real size it gets (toc->capacity). To my surprise bot DAO and TAO written CD-RWs report identical capacity but reading disk written in TAO consistently ends with error. There are no problems using both CDs as far as I can tell.
Here are results of writing the same image:
-rw-r--r-- 1 root root 22118400 May 4 14:24 mindi.iso
once in DAO/close disk and once in TAO/leave disk open:
{pts/0}% dd if=/dev/cdrom of=/dev/null bs=2048
10800+0 records in
10800+0 records out
{pts/0}% dd if=/dev/cdrom of=/dev/null bs=2048
dd: reading `/dev/cdrom': Input/output error
10788+0 records in
10788+0 records out
and in dmesg:
{pts/2}% dmesg | grep 16:0blkdev_size: dev = 16:00 size = 4294967295 ide-cd capacity = 10800 dev = 16:00blkdev_size: dev = 16:00 size = 21600
ide-cd capacity = 10800 dev = 16:00blkdev_size: dev = 16:00 size = 21600end_request: I/O error, dev 16:00 (hdc), sector 43152end_request: I/O error, dev 16:00 (hdc), sector 43156end_request: I/O error, dev 16:00 (hdc), sector 43160end_request: I/O error, dev 16:00 (hdc), sector 43164end_request: I/O error, dev 16:00 (hdc), sector 43168end_request: I/O error, dev 16:00 (hdc), sector 43172end_request: I/O error, dev 16:00 (hdc), sector 43176end_request: I/O error, dev 16:00 (hdc), sector 43180end_request: I/O error, dev 16:00 (hdc), sector 43184end_request: I/O error, dev 16:00 (hdc), sector 43188end_request: I/O error, dev 16:00 (hdc), sector 43192end_request: I/O error, dev 16:00 (hdc), sector 43196
errors are:
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54end_request: I/O error, dev 16:00 (hdc), sector 43152
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54end_request: I/O error, dev 16:00 (hdc), sector 43156
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54
... etc
Please, tell if I can provide any more info.
regards
-andrej