Re: [Problem]: "access beyond end" of DVD-R

From: Jens Axboe
Date: Fri Mar 26 2004 - 03:24:09 EST


On Thu, Mar 25 2004, Shawn Lindberg wrote:
> Jens Axboe wrote:
> > On Wed, Mar 24 2004, Shawn Lindberg wrote:
> >
> >>Jens Axboe wrote:
> >>
> >>>On Mon, Mar 22 2004, slindber@xxxxxxxx wrote:
> >>>
> >>>
> >>>>attempt to access beyond end of device
> >>>>hdc: rw=0, want=8174536, limit=8123200
> >>>>Buffer I/O error on device hdc, logical block 2043633
> >>>>
> >>>>There are more attempt to "access beyond end of device" messages, but
> >>>>they are similar so I've snipped them.
> >>>
> >>>Does this make a difference for you (2.6 patch)?
> >>
> >>I made that one line change to my 2.6.3 kernel from gentoo and it
> >>fixed the problem for both the ISO/UDF and UDF discs (I couldn't try
> >>the ISO only disc since I don't have it anymore). I also tried a few
> >>CDs to get a rough check for whether it introduced new errors, but
> >>they were fine also. Please let me know if I should do any further
> >>testing, and THANKS!
> >
> >
> > If you could do one more test to see how they differ that would be
> > great. Attaching a patch for that, apply that instead of the other one
> > (or just manually paste the added printk in there).
> >
> > ===== drivers/ide/ide-cd.c 1.75 vs edited =====
> > --- 1.75/drivers/ide/ide-cd.c Tue Mar 16 09:39:41 2004
> > +++ edited/drivers/ide/ide-cd.c Thu Mar 25 07:55:14 2004
> > @@ -2372,7 +2372,8 @@
> >
> > /* Now try to get the total cdrom capacity. */
> > stat = cdrom_get_last_written(cdi, &last_written);
> > - if (!stat && last_written) {
> > + if (!stat && (last_written > toc->capacity)) {
> > + printk("old cap %lu, new cap %lu\n", toc->capacity, last_written);
> > toc->capacity = last_written;
> > set_capacity(drive->disk, toc->capacity * sectors_per_frame);
> > }
> >
>
> First I made the above patch. I saw no change in the output (there was no instance of the new printk in the output - but reading the disc worked). Then I made this patch:
>
> --- /usr/src/linux/drivers/ide/ide-cd.c.pre-patch 2004-03-24 08:32:50.000000000 -0600
> +++ /usr/src/linux/drivers/ide/ide-cd.c 2004-03-25 16:30:37.000000000 -0600
> @@ -2420,6 +2420,7 @@
> /* Now try to get the total cdrom capacity. */
> stat = cdrom_get_last_written(cdi, &last_written);
> if (!stat && last_written) {
> + printk("cdrom: old cap %lu, new cap %lu\n", toc->capacity, last_written);
> toc->capacity = last_written;
> set_capacity(drive->disk, toc->capacity * sectors_per_frame);
> }
>
> and I got this as output:
>
> cdrom: old cap 2227408, new cap 2030800

Yes of course, otherwise it would not trigger :-). Thanks for testing,
I'll get this one comitted right away.

--
Jens Axboe

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/