On Mer, 2006-03-29 at 21:11 +0200, Krzysztof Halasa wrote:Any hope in hell of getting this fixed? It's been broken for too long to remember. IIRC the problem is that on a read which hits EOF, instead of returning partial data read and no error, the status returned is just some "didn't work" variant and the partial read is lost. I also seem to remember that if the length of the ISO was a multiple of a magic number, 32k, or the metric hexadecimal phase of the moon, you got a clean EOF.# ls -l
-rw-r--r-- 1 root root 687177728 Mar 29 15:51 img-15.iso
-rw-r--r-- 1 root root 687177728 Mar 29 15:58 img-15a.iso
The files are just truncated FC5d1 images (57344 bytes missing).
The final partial read is dropped rather than partially completed.
# cat /sys/block/sr0/size
1342264 (i.e., the same as with 2.6.15 + drivers/ide)
# cat /dev/cdrw > img-16a.iso
cat: /dev/cdrw: Input/output error
# cat /sys/block/sr0/size
1342256 (looks like it has been adjusted to .iso image size / 512 when
the first I/O error occured)
The SCSI layer does this bit for everyone. Its actually not libata or
the PATA drivers that have done the work here. You should find ide-scsi
does the same.
I patched the old IDE driver a bit to try and deal with this and if you
want the patch to hack on and tidy up further feel free.