Re: Fw: Re: 2.6.9-rc2-mm4

Jens Axboe
2004-10-05T07:16:03Z

On Mon, Oct 04 2004, Borislav Petkov wrote:
> On Monday 04 October 2004 22:42, Jens Axboe wrote:
> > On Mon, Oct 04 2004, Borislav Petkov wrote:
> > > On Monday 04 October 2004 19:36, Jens Axboe wrote:
> > > > On Mon, Oct 04 2004, Borislav Petkov wrote:
> > > > > Ok here we go,
> > > > >
> > > > > final results:
> > > > >
> > > > > 2.6.8-rc1: OK
> > > > > 2.6.8-rc2: OK
> > > > > 2.6.8-rc3: OK
> > > > > 2.6.8-rc3-bk1: OK
> > > > > 2.6.8-rc3-bk2: OK
> > > > > 2.6.8-rc3-bk3: OK
> > > > > 2.6.8-rc3-bk4: OK
> > > > > 2.6.8-rc4: BUG!
> > > > >
> > > > > So, assuming that everything went fine during testing, the bug got
> > > > > introduced in the transition between 2.6.8-rc3-bk4 and 2.6.8-rc4.
> > > >
> > > > That's some nice testing, thank you. Try backing out this hunk:
> > > >
> > > > diff -urp linux-2.6.8-rc3-bk4/drivers/block/scsi_ioctl.c
> > > > linux-2.6.8-rc4/drivers/block/scsi_ioctl.c ---
> > > > linux-2.6.8-rc3-bk4/drivers/block/scsi_ioctl.c 2004-08-03
> > > > 23:28:51.000000000 +0200 +++
> > > > linux-2.6.8-rc4/drivers/block/scsi_ioctl.c 2004-08-10
> > > > 04:24:08.000000000 +0200 @@ -90,7 +90,7 @@ static int
> > > > sg_set_reserved_size(request_ if (size < 0)
> > > > return -EINVAL;
> > > > if (size > (q->max_sectors << 9))
> > > > - return -EINVAL;
> > > > + size = q->max_sectors << 9;
> > > >
> > > > q->sg_reserved_size = size;
> > > > return 0;
> > > >
> > > > It's the only thing that sticks out, and it could easily explain it if
> > > > your cd ripper starts issuing requests that are too big. Maybe even add
> > > > a printk() here, so it will look like this in the kernel you test:
> > > >
> > > > if (size > (q->sectors << 9)) {
> > > > printk("%u rejected\n", size);
> > > > return -EINVAL;
> > > > }
> > > >
> > > > to verify.
> > >
> > > Yeah, that was it. Two lines in the log:
> > >
> > > Oct 4 22:07:04 zmei kernel: 3145728 rejected
> > > Oct 4 22:07:04 zmei kernel: 3145728 rejected
> > >
> > > Hmm, so this means that my dvd drive is sending too big requests. What do
> > > we do: firmware upgrade?
> >
> > It actually means we have a little discrepancy between what programs
> > expact of the api. What program are you using? They are supposed to read
> > back what value has been set with SG_GET_RESERVED_SIZE, I guess this one
> > does not
> >
> It is called cdda2wav and it is part of the cdrtools package by Joerg
> Schilling.

Then it's a bug for sure. Not because it's Joerg, but because the
semantics in the newer kernel is what he wanted. And what sg has been
doing for a long time. The difference is that if you go through
sg/ide-scsi, the scsi mid layer will handle requeueing a request for
you. Most other drivers don't support requests larger than what the
drive can handle in one operation.

You don't have an old version or anything like that, do you?

--
Jens Axboe