Re: [regression/bisected] corrupt CD data after media change and delay

James Bottomley
2008-06-06T15:13:29Z

On Fri, 2008-06-06 at 16:06 +0200, Geert Uytterhoeven wrote:
> Hi all,
>
> When mounting a CD/DVD more than 30 seconds after inserting it, and reading
> from it, we get:
>
> attempt to access beyond end of device
> sr0: rw=0, want=371932, limit=371928
> Buffer I/O error on device sr0, logical block 92982
> attempt to access beyond end of device
> sr0: rw=0, want=371936, limit=371928
> Buffer I/O error on device sr0, logical block 92983
> attempt to access beyond end of device
> sr0: rw=0, want=371940, limit=371928
> Buffer I/O error on device sr0, logical block 92984
> attempt to access beyond end of device
> sr0: rw=0, want=371944, limit=371928
> Buffer I/O error on device sr0, logical block 92985
> attempt to access beyond end of device
> sr0: rw=0, want=371948, limit=371928
> Buffer I/O error on device sr0, logical block 92986
> ...
>
> It can be reproduced on a PS3 with busybox userland using:
>
> # Insert first CD
> $ mount /dev/sr0 /mnt
> $ ls -R /mnt
> $ umount /mnt
> $ eject
> # Remove first CD
>
> # Insert second CD
> # Wait at least 30 seconds
> $ mount /dev/sr0 /mnt
> $ tar cf /dev/null /mnt
>
> It does not happen when mounting the second CD within 30 seconds after
> inserting it, which is consistent with
>
> #define SR_TIMEOUT (30 * HZ)
>
> I can't seem to reproduce it with a Debian or Fedora Core 6 userland.
>
> The problem is present in 2.6.25.
> 2.6.24 is OK.

Hmm ... how are you preventing HAL from automatically mounting the CD?

Also, in the two different situations, what does

cat /sys/block/sr0/size

(assuming your cd is sr0) give you? My first theory is an incorrect
size propagating from something.

James