* Re: 2.6.25-rc1/2 CD/DVD burning broken
2008-02-18 18:58 ` Kiyoshi Ueda
@ 2008-02-18 19:55 ` Laura Garcia
2008-02-18 20:19 ` Andreas Schwab
` (2 subsequent siblings)
3 siblings, 0 replies; 25+ messages in thread
From: Laura Garcia @ 2008-02-18 19:55 UTC (permalink / raw)
To: Kiyoshi Ueda
Cc: schwab, bzolnier, linux-kernel, jens.axboe, petkovbb, j-nomura
It works great for me.
Thanks,
Laura.
Kiyoshi Ueda wrote:
> Hi Andreas,
>
> On Sat, 16 Feb 2008 21:52:21 +0100, Andreas Schwab wrote:
>> Since commit aaa04c28cb9a1efd42541fdb7ab648231c2a2263 [blk_end_request:
>> changing ide-cd (take 4)] I cannot burn any CD/DVD any more, getting the
>> following error from wodim:
>>
>> Errno: 0 (Success), write_g1 scsi sendcmd: no error
>> CDB: 2A 00 00 00 00 00 00 00 1F 00
>> status: 0x2 (CHECK CONDITION)
>> Sense Bytes: 70 00 05 00 00 00 00 0E 00 00 00 00 21 02 00 00
>> Sense Key: 0x5 Illegal Request, Segment 0
>> Sense Code: 0x21 Qual 0x02 (invalid address for write) Fru 0x0
>> Sense flags: Blk 0 (not valid)
>> resid: 63488
>
> Could you try this patch?
> I've only done a compile test, so this patch may not work.
>
> During the conversion to blk_end_request, the code was changed
> *not* to set rq->data_len = 0.
> I removed that part because I thought it was just a trigger to
> call post_transform_command(). However, since data_len can be
> used as a residual length of the transfer, it might have to remain
> there.
> Actually, wodim seems checking the residual count how far it wrote
> (e.g. wodim/wodim.c:write_track_data()).
>
> This patch brings back the rq->data_len = 0.
>
> --- 2.6.25-rc2/drivers/ide/ide-cd.c 2008-02-15 15:57:20.000000000 -0500
> +++ ide-fix/drivers/ide/ide-cd.c 2008-02-18 01:23:40.000000000 -0500
> @@ -1207,9 +1207,13 @@ static ide_startstop_t cdrom_newpc_intr(
> end_request:
> if (blk_pc_request(rq)) {
> unsigned long flags;
> + unsigned int dlen = rq->data_len;
> +
> + if (dma)
> + rq->data_len = 0;
>
> spin_lock_irqsave(&ide_lock, flags);
> - if (__blk_end_request(rq, 0, rq->data_len))
> + if (__blk_end_request(rq, 0, dlen))
> BUG();
> HWGROUP(drive)->rq = NULL;
> spin_unlock_irqrestore(&ide_lock, flags);
>
> Thanks,
> Kiyoshi Ueda
^ permalink raw reply [flat|nested] 25+ messages in thread* Re: 2.6.25-rc1/2 CD/DVD burning broken
2008-02-18 18:58 ` Kiyoshi Ueda
2008-02-18 19:55 ` Laura Garcia
@ 2008-02-18 20:19 ` Andreas Schwab
2008-02-18 20:20 ` Borislav Petkov
2008-02-23 15:47 ` 2.6.25-rc1/2 CD/DVD burning broken Andreas Schwab
3 siblings, 0 replies; 25+ messages in thread
From: Andreas Schwab @ 2008-02-18 20:19 UTC (permalink / raw)
To: Kiyoshi Ueda; +Cc: bzolnier, linux-kernel, jens.axboe, petkovbb, j-nomura
Kiyoshi Ueda <k-ueda@ct.jp.nec.com> writes:
> Could you try this patch?
> I've only done a compile test, so this patch may not work.
>
> During the conversion to blk_end_request, the code was changed
> *not* to set rq->data_len = 0.
> I removed that part because I thought it was just a trigger to
> call post_transform_command(). However, since data_len can be
> used as a residual length of the transfer, it might have to remain
> there.
> Actually, wodim seems checking the residual count how far it wrote
> (e.g. wodim/wodim.c:write_track_data()).
>
> This patch brings back the rq->data_len = 0.
Looks good, I was successfully able to burn a CD-RW.
Thanks, Andreas.
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: 2.6.25-rc1/2 CD/DVD burning broken
2008-02-18 18:58 ` Kiyoshi Ueda
2008-02-18 19:55 ` Laura Garcia
2008-02-18 20:19 ` Andreas Schwab
@ 2008-02-18 20:20 ` Borislav Petkov
2008-02-18 22:37 ` Borislav Petkov
2008-02-23 15:47 ` 2.6.25-rc1/2 CD/DVD burning broken Andreas Schwab
3 siblings, 1 reply; 25+ messages in thread
From: Borislav Petkov @ 2008-02-18 20:20 UTC (permalink / raw)
To: Kiyoshi Ueda; +Cc: schwab, bzolnier, linux-kernel, jens.axboe, j-nomura
On Mon, Feb 18, 2008 at 01:58:27PM -0500, Kiyoshi Ueda wrote:
> Hi Andreas,
>
> On Sat, 16 Feb 2008 21:52:21 +0100, Andreas Schwab wrote:
> > Since commit aaa04c28cb9a1efd42541fdb7ab648231c2a2263 [blk_end_request:
> > changing ide-cd (take 4)] I cannot burn any CD/DVD any more, getting the
> > following error from wodim:
> >
> > Errno: 0 (Success), write_g1 scsi sendcmd: no error
> > CDB: 2A 00 00 00 00 00 00 00 1F 00
> > status: 0x2 (CHECK CONDITION)
> > Sense Bytes: 70 00 05 00 00 00 00 0E 00 00 00 00 21 02 00 00
> > Sense Key: 0x5 Illegal Request, Segment 0
> > Sense Code: 0x21 Qual 0x02 (invalid address for write) Fru 0x0
> > Sense flags: Blk 0 (not valid)
> > resid: 63488
>
> Could you try this patch?
> I've only done a compile test, so this patch may not work.
>
> During the conversion to blk_end_request, the code was changed
> *not* to set rq->data_len = 0.
> I removed that part because I thought it was just a trigger to
> call post_transform_command(). However, since data_len can be
> used as a residual length of the transfer, it might have to remain
> there.
> Actually, wodim seems checking the residual count how far it wrote
> (e.g. wodim/wodim.c:write_track_data()).
and there seems to be some discrepancy between the different burning tools for i
just did test burning a cdimage with cdrdao unter 2.6.25-rc2 and it _works_
flawlessly:
# cdrdao write --device /dev/hdc test.toc
Cdrdao version 1.2.2 - (C) Andreas Mueller <andreas@daneb.de>
SCSI interface library - (C) Joerg Schilling
Paranoia DAE library - (C) Monty
Check http://cdrdao.sourceforge.net/drives.html#dt for current driver tables.
Using libscg version 'ubuntu-0.8ubuntu1'
/dev/hdc: TOSHIBA ODD-DVD SD-R6372 Rev: 1730
Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0x0000)
Starting write at speed 4...
Pausing 10 seconds - hit CTRL-C to abort.
Process can be aborted with QUIT signal (usually CTRL-\).
Turning BURN-Proof on
Executing power calibration...
Power calibration successful.
Writing track 01 (mode MODE1_RAW/MODE1_RAW )...
Wrote 1 of 18 MB (Buffers 100% 94%).
Wrote 2 of 18 MB (Buffers 100% 94%).
Wrote 3 of 18 MB (Buffers 100% 94%).
Wrote 4 of 18 MB (Buffers 100% 94%).
Wrote 5 of 18 MB (Buffers 100% 94%).
Wrote 6 of 18 MB (Buffers 100% 94%).
Wrote 7 of 18 MB (Buffers 100% 94%).
Wrote 8 of 18 MB (Buffers 100% 94%).
Wrote 9 of 18 MB (Buffers 100% 94%).
Wrote 10 of 18 MB (Buffers 100% 94%).
Wrote 11 of 18 MB (Buffers 100% 94%).
Wrote 12 of 18 MB (Buffers 100% 94%).
Wrote 13 of 18 MB (Buffers 100% 94%).
Wrote 14 of 18 MB (Buffers 100% 94%).
Wrote 15 of 18 MB (Buffers 100% 94%).
Wrote 16 of 18 MB (Buffers 100% 94%).
Wrote 17 of 18 MB (Buffers 100% 94%).
Wrote 18 of 18 MB (Buffers 100% 94%).
Wrote 8056 blocks. Buffer fill min 100%/max 100%.
Flushing cache...
Writing finished successfully.
> This patch brings back the rq->data_len = 0.
>
> --- 2.6.25-rc2/drivers/ide/ide-cd.c 2008-02-15 15:57:20.000000000 -0500
> +++ ide-fix/drivers/ide/ide-cd.c 2008-02-18 01:23:40.000000000 -0500
> @@ -1207,9 +1207,13 @@ static ide_startstop_t cdrom_newpc_intr(
> end_request:
> if (blk_pc_request(rq)) {
> unsigned long flags;
> + unsigned int dlen = rq->data_len;
> +
> + if (dma)
> + rq->data_len = 0;
>
> spin_lock_irqsave(&ide_lock, flags);
> - if (__blk_end_request(rq, 0, rq->data_len))
> + if (__blk_end_request(rq, 0, dlen))
> BUG();
> HWGROUP(drive)->rq = NULL;
> spin_unlock_irqrestore(&ide_lock, flags);
>
> Thanks,
> Kiyoshi Ueda
next will test the one above...
--
Regards/Gruß,
Boris.
^ permalink raw reply [flat|nested] 25+ messages in thread* Re: 2.6.25-rc1/2 CD/DVD burning broken
2008-02-18 20:20 ` Borislav Petkov
@ 2008-02-18 22:37 ` Borislav Petkov
2008-02-18 23:14 ` [PATCH] ide-cd: fix missing residual count setting in DMA mode (Was 2.6.25-rc1/2 CD/DVD burning broken) Kiyoshi Ueda
0 siblings, 1 reply; 25+ messages in thread
From: Borislav Petkov @ 2008-02-18 22:37 UTC (permalink / raw)
To: Kiyoshi Ueda; +Cc: bzolnier, schwab, linux-kernel, jens.axboe, j-nomura
On Mon, Feb 18, 2008 at 09:20:41PM +0100, Borislav Petkov wrote:
> On Mon, Feb 18, 2008 at 01:58:27PM -0500, Kiyoshi Ueda wrote:
> > Hi Andreas,
> >
> > On Sat, 16 Feb 2008 21:52:21 +0100, Andreas Schwab wrote:
> > > Since commit aaa04c28cb9a1efd42541fdb7ab648231c2a2263 [blk_end_request:
> > > changing ide-cd (take 4)] I cannot burn any CD/DVD any more, getting the
> > > following error from wodim:
> > >
> > > Errno: 0 (Success), write_g1 scsi sendcmd: no error
> > > CDB: 2A 00 00 00 00 00 00 00 1F 00
> > > status: 0x2 (CHECK CONDITION)
> > > Sense Bytes: 70 00 05 00 00 00 00 0E 00 00 00 00 21 02 00 00
> > > Sense Key: 0x5 Illegal Request, Segment 0
> > > Sense Code: 0x21 Qual 0x02 (invalid address for write) Fru 0x0
> > > Sense flags: Blk 0 (not valid)
> > > resid: 63488
> >
> > Could you try this patch?
> > I've only done a compile test, so this patch may not work.
> >
> > During the conversion to blk_end_request, the code was changed
> > *not* to set rq->data_len = 0.
> > I removed that part because I thought it was just a trigger to
> > call post_transform_command(). However, since data_len can be
> > used as a residual length of the transfer, it might have to remain
> > there.
> > Actually, wodim seems checking the residual count how far it wrote
> > (e.g. wodim/wodim.c:write_track_data()).
>
> and there seems to be some discrepancy between the different burning tools for i
> just did test burning a cdimage with cdrdao unter 2.6.25-rc2 and it _works_
> flawlessly:
>
> # cdrdao write --device /dev/hdc test.toc
>
> Cdrdao version 1.2.2 - (C) Andreas Mueller <andreas@daneb.de>
> SCSI interface library - (C) Joerg Schilling
> Paranoia DAE library - (C) Monty
>
> Check http://cdrdao.sourceforge.net/drives.html#dt for current driver tables.
>
> Using libscg version 'ubuntu-0.8ubuntu1'
>
> /dev/hdc: TOSHIBA ODD-DVD SD-R6372 Rev: 1730
> Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0x0000)
>
> Starting write at speed 4...
> Pausing 10 seconds - hit CTRL-C to abort.
> Process can be aborted with QUIT signal (usually CTRL-\).
> Turning BURN-Proof on
> Executing power calibration...
> Power calibration successful.
> Writing track 01 (mode MODE1_RAW/MODE1_RAW )...
> Wrote 1 of 18 MB (Buffers 100% 94%).
> Wrote 2 of 18 MB (Buffers 100% 94%).
> Wrote 3 of 18 MB (Buffers 100% 94%).
> Wrote 4 of 18 MB (Buffers 100% 94%).
> Wrote 5 of 18 MB (Buffers 100% 94%).
> Wrote 6 of 18 MB (Buffers 100% 94%).
> Wrote 7 of 18 MB (Buffers 100% 94%).
> Wrote 8 of 18 MB (Buffers 100% 94%).
> Wrote 9 of 18 MB (Buffers 100% 94%).
> Wrote 10 of 18 MB (Buffers 100% 94%).
> Wrote 11 of 18 MB (Buffers 100% 94%).
> Wrote 12 of 18 MB (Buffers 100% 94%).
> Wrote 13 of 18 MB (Buffers 100% 94%).
> Wrote 14 of 18 MB (Buffers 100% 94%).
> Wrote 15 of 18 MB (Buffers 100% 94%).
> Wrote 16 of 18 MB (Buffers 100% 94%).
> Wrote 17 of 18 MB (Buffers 100% 94%).
> Wrote 18 of 18 MB (Buffers 100% 94%).
>
> Wrote 8056 blocks. Buffer fill min 100%/max 100%.
> Flushing cache...
> Writing finished successfully.
>
> > This patch brings back the rq->data_len = 0.
> >
> > --- 2.6.25-rc2/drivers/ide/ide-cd.c 2008-02-15 15:57:20.000000000 -0500
> > +++ ide-fix/drivers/ide/ide-cd.c 2008-02-18 01:23:40.000000000 -0500
> > @@ -1207,9 +1207,13 @@ static ide_startstop_t cdrom_newpc_intr(
> > end_request:
> > if (blk_pc_request(rq)) {
> > unsigned long flags;
> > + unsigned int dlen = rq->data_len;
> > +
> > + if (dma)
> > + rq->data_len = 0;
> >
> > spin_lock_irqsave(&ide_lock, flags);
> > - if (__blk_end_request(rq, 0, rq->data_len))
> > + if (__blk_end_request(rq, 0, dlen))
> > BUG();
> > HWGROUP(drive)->rq = NULL;
> > spin_unlock_irqrestore(&ide_lock, flags);
> >
> > Thanks,
> > Kiyoshi Ueda
>
> next will test the one above...
confirmed here too - burning succeeds both with wodim and cdrdao.
>
> --
> Regards/Gruß,
> Boris.
--
Regards/Gruß,
Boris.
^ permalink raw reply [flat|nested] 25+ messages in thread* [PATCH] ide-cd: fix missing residual count setting in DMA mode (Was 2.6.25-rc1/2 CD/DVD burning broken)
2008-02-18 22:37 ` Borislav Petkov
@ 2008-02-18 23:14 ` Kiyoshi Ueda
2008-02-19 0:17 ` Bartlomiej Zolnierkiewicz
0 siblings, 1 reply; 25+ messages in thread
From: Kiyoshi Ueda @ 2008-02-18 23:14 UTC (permalink / raw)
To: bzolnier; +Cc: petkovbb, schwab, linux-kernel, jens.axboe, j-nomura, k-ueda
Hi,
On Mon, 18 Feb 2008 23:37:48 +0100, Borislav Petkov wrote:
> On Mon, Feb 18, 2008 at 09:20:41PM +0100, Borislav Petkov wrote:
> > On Mon, Feb 18, 2008 at 01:58:27PM -0500, Kiyoshi Ueda wrote:
> > > Hi Andreas,
> > >
> > > On Sat, 16 Feb 2008 21:52:21 +0100, Andreas Schwab wrote:
> > > > Since commit aaa04c28cb9a1efd42541fdb7ab648231c2a2263 [blk_end_request:
> > > > changing ide-cd (take 4)] I cannot burn any CD/DVD any more, getting the
> > > > following error from wodim:
> > > >
> > > > Errno: 0 (Success), write_g1 scsi sendcmd: no error
> > > > CDB: 2A 00 00 00 00 00 00 00 1F 00
> > > > status: 0x2 (CHECK CONDITION)
> > > > Sense Bytes: 70 00 05 00 00 00 00 0E 00 00 00 00 21 02 00 00
> > > > Sense Key: 0x5 Illegal Request, Segment 0
> > > > Sense Code: 0x21 Qual 0x02 (invalid address for write) Fru 0x0
> > > > Sense flags: Blk 0 (not valid)
> > > > resid: 63488
> > >
> > > Could you try this patch?
> > > I've only done a compile test, so this patch may not work.
> > >
> > > During the conversion to blk_end_request, the code was changed
> > > *not* to set rq->data_len = 0.
> > > I removed that part because I thought it was just a trigger to
> > > call post_transform_command(). However, since data_len can be
> > > used as a residual length of the transfer, it might have to remain
> > > there.
> > > Actually, wodim seems checking the residual count how far it wrote
> > > (e.g. wodim/wodim.c:write_track_data()).
> >
> > and there seems to be some discrepancy between the different burning tools for i
> > just did test burning a cdimage with cdrdao unter 2.6.25-rc2 and it _works_
> > flawlessly:
> >
> > # cdrdao write --device /dev/hdc test.toc
> >
> > Cdrdao version 1.2.2 - (C) Andreas Mueller <andreas@daneb.de>
> > SCSI interface library - (C) Joerg Schilling
> > Paranoia DAE library - (C) Monty
> >
> > Check http://cdrdao.sourceforge.net/drives.html#dt for current driver tables.
> >
> > Using libscg version 'ubuntu-0.8ubuntu1'
> >
> > /dev/hdc: TOSHIBA ODD-DVD SD-R6372 Rev: 1730
> > Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0x0000)
> >
> > Starting write at speed 4...
> > Pausing 10 seconds - hit CTRL-C to abort.
> > Process can be aborted with QUIT signal (usually CTRL-\).
> > Turning BURN-Proof on
> > Executing power calibration...
> > Power calibration successful.
> > Writing track 01 (mode MODE1_RAW/MODE1_RAW )...
> > Wrote 1 of 18 MB (Buffers 100% 94%).
> > Wrote 2 of 18 MB (Buffers 100% 94%).
> > Wrote 3 of 18 MB (Buffers 100% 94%).
> > Wrote 4 of 18 MB (Buffers 100% 94%).
> > Wrote 5 of 18 MB (Buffers 100% 94%).
> > Wrote 6 of 18 MB (Buffers 100% 94%).
> > Wrote 7 of 18 MB (Buffers 100% 94%).
> > Wrote 8 of 18 MB (Buffers 100% 94%).
> > Wrote 9 of 18 MB (Buffers 100% 94%).
> > Wrote 10 of 18 MB (Buffers 100% 94%).
> > Wrote 11 of 18 MB (Buffers 100% 94%).
> > Wrote 12 of 18 MB (Buffers 100% 94%).
> > Wrote 13 of 18 MB (Buffers 100% 94%).
> > Wrote 14 of 18 MB (Buffers 100% 94%).
> > Wrote 15 of 18 MB (Buffers 100% 94%).
> > Wrote 16 of 18 MB (Buffers 100% 94%).
> > Wrote 17 of 18 MB (Buffers 100% 94%).
> > Wrote 18 of 18 MB (Buffers 100% 94%).
> >
> > Wrote 8056 blocks. Buffer fill min 100%/max 100%.
> > Flushing cache...
> > Writing finished successfully.
> >
> > > This patch brings back the rq->data_len = 0.
> > >
> > > --- 2.6.25-rc2/drivers/ide/ide-cd.c 2008-02-15 15:57:20.000000000 -0500
> > > +++ ide-fix/drivers/ide/ide-cd.c 2008-02-18 01:23:40.000000000 -0500
> > > @@ -1207,9 +1207,13 @@ static ide_startstop_t cdrom_newpc_intr(
> > > end_request:
> > > if (blk_pc_request(rq)) {
> > > unsigned long flags;
> > > + unsigned int dlen = rq->data_len;
> > > +
> > > + if (dma)
> > > + rq->data_len = 0;
> > >
> > > spin_lock_irqsave(&ide_lock, flags);
> > > - if (__blk_end_request(rq, 0, rq->data_len))
> > > + if (__blk_end_request(rq, 0, dlen))
> > > BUG();
> > > HWGROUP(drive)->rq = NULL;
> > > spin_unlock_irqrestore(&ide_lock, flags);
> > >
> > > Thanks,
> > > Kiyoshi Ueda
> >
> > next will test the one above...
>
>
> confirmed here too - burning succeeds both with wodim and cdrdao.
Thank you for testing, Laura, Andreas, Boris.
And I'm really sorry about the bug, all.
Bart,
Please review and apply the patch below to fix the bug.
[PATCH] ide-cd: fix missing residual count setting in DMA mode
This patch fixes the missing residual count setting in DMA mode,
which was introduced during the conversion to blk-end-request.
The residual count could be used by the request submitter.
So if it isn't set correctly, some upper layers does not work.
(e.g. wodim for CD burning.)
The bug is in only DMA mode.
In PIO mode, we are setting the residual count correctly,
so no need to fix.
Signed-off-by: Kiyoshi Ueda <k-ueda@ct.jp.nec.com>
Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
---
drivers/ide/ide-cd.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
--- 2.6.25-rc2/drivers/ide/ide-cd.c 2008-02-15 15:57:20.000000000 -0500
+++ ide-fix/drivers/ide/ide-cd.c 2008-02-18 01:23:40.000000000 -0500
@@ -1207,9 +1207,13 @@ static ide_startstop_t cdrom_newpc_intr(
end_request:
if (blk_pc_request(rq)) {
unsigned long flags;
+ unsigned int dlen = rq->data_len;
+
+ if (dma)
+ rq->data_len = 0;
spin_lock_irqsave(&ide_lock, flags);
- if (__blk_end_request(rq, 0, rq->data_len))
+ if (__blk_end_request(rq, 0, dlen))
BUG();
HWGROUP(drive)->rq = NULL;
spin_unlock_irqrestore(&ide_lock, flags);
Thanks,
Kiyoshi Ueda
^ permalink raw reply [flat|nested] 25+ messages in thread* Re: [PATCH] ide-cd: fix missing residual count setting in DMA mode (Was 2.6.25-rc1/2 CD/DVD burning broken)
2008-02-18 23:14 ` [PATCH] ide-cd: fix missing residual count setting in DMA mode (Was 2.6.25-rc1/2 CD/DVD burning broken) Kiyoshi Ueda
@ 2008-02-19 0:17 ` Bartlomiej Zolnierkiewicz
0 siblings, 0 replies; 25+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2008-02-19 0:17 UTC (permalink / raw)
To: Kiyoshi Ueda; +Cc: petkovbb, schwab, linux-kernel, jens.axboe, j-nomura
On Tuesday 19 February 2008, Kiyoshi Ueda wrote:
> Hi,
>
> On Mon, 18 Feb 2008 23:37:48 +0100, Borislav Petkov wrote:
> > On Mon, Feb 18, 2008 at 09:20:41PM +0100, Borislav Petkov wrote:
> > > On Mon, Feb 18, 2008 at 01:58:27PM -0500, Kiyoshi Ueda wrote:
> > > > Hi Andreas,
> > > >
> > > > On Sat, 16 Feb 2008 21:52:21 +0100, Andreas Schwab wrote:
> > > > > Since commit aaa04c28cb9a1efd42541fdb7ab648231c2a2263 [blk_end_request:
> > > > > changing ide-cd (take 4)] I cannot burn any CD/DVD any more, getting the
> > > > > following error from wodim:
> > > > >
> > > > > Errno: 0 (Success), write_g1 scsi sendcmd: no error
> > > > > CDB: 2A 00 00 00 00 00 00 00 1F 00
> > > > > status: 0x2 (CHECK CONDITION)
> > > > > Sense Bytes: 70 00 05 00 00 00 00 0E 00 00 00 00 21 02 00 00
> > > > > Sense Key: 0x5 Illegal Request, Segment 0
> > > > > Sense Code: 0x21 Qual 0x02 (invalid address for write) Fru 0x0
> > > > > Sense flags: Blk 0 (not valid)
> > > > > resid: 63488
> > > >
> > > > Could you try this patch?
> > > > I've only done a compile test, so this patch may not work.
> > > >
> > > > During the conversion to blk_end_request, the code was changed
> > > > *not* to set rq->data_len = 0.
> > > > I removed that part because I thought it was just a trigger to
> > > > call post_transform_command(). However, since data_len can be
> > > > used as a residual length of the transfer, it might have to remain
> > > > there.
> > > > Actually, wodim seems checking the residual count how far it wrote
> > > > (e.g. wodim/wodim.c:write_track_data()).
> > >
> > > and there seems to be some discrepancy between the different burning tools for i
> > > just did test burning a cdimage with cdrdao unter 2.6.25-rc2 and it _works_
> > > flawlessly:
> > >
> > > # cdrdao write --device /dev/hdc test.toc
> > >
> > > Cdrdao version 1.2.2 - (C) Andreas Mueller <andreas@daneb.de>
> > > SCSI interface library - (C) Joerg Schilling
> > > Paranoia DAE library - (C) Monty
> > >
> > > Check http://cdrdao.sourceforge.net/drives.html#dt for current driver tables.
> > >
> > > Using libscg version 'ubuntu-0.8ubuntu1'
> > >
> > > /dev/hdc: TOSHIBA ODD-DVD SD-R6372 Rev: 1730
> > > Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0x0000)
> > >
> > > Starting write at speed 4...
> > > Pausing 10 seconds - hit CTRL-C to abort.
> > > Process can be aborted with QUIT signal (usually CTRL-\).
> > > Turning BURN-Proof on
> > > Executing power calibration...
> > > Power calibration successful.
> > > Writing track 01 (mode MODE1_RAW/MODE1_RAW )...
> > > Wrote 1 of 18 MB (Buffers 100% 94%).
> > > Wrote 2 of 18 MB (Buffers 100% 94%).
> > > Wrote 3 of 18 MB (Buffers 100% 94%).
> > > Wrote 4 of 18 MB (Buffers 100% 94%).
> > > Wrote 5 of 18 MB (Buffers 100% 94%).
> > > Wrote 6 of 18 MB (Buffers 100% 94%).
> > > Wrote 7 of 18 MB (Buffers 100% 94%).
> > > Wrote 8 of 18 MB (Buffers 100% 94%).
> > > Wrote 9 of 18 MB (Buffers 100% 94%).
> > > Wrote 10 of 18 MB (Buffers 100% 94%).
> > > Wrote 11 of 18 MB (Buffers 100% 94%).
> > > Wrote 12 of 18 MB (Buffers 100% 94%).
> > > Wrote 13 of 18 MB (Buffers 100% 94%).
> > > Wrote 14 of 18 MB (Buffers 100% 94%).
> > > Wrote 15 of 18 MB (Buffers 100% 94%).
> > > Wrote 16 of 18 MB (Buffers 100% 94%).
> > > Wrote 17 of 18 MB (Buffers 100% 94%).
> > > Wrote 18 of 18 MB (Buffers 100% 94%).
> > >
> > > Wrote 8056 blocks. Buffer fill min 100%/max 100%.
> > > Flushing cache...
> > > Writing finished successfully.
> > >
> > > > This patch brings back the rq->data_len = 0.
> > > >
> > > > --- 2.6.25-rc2/drivers/ide/ide-cd.c 2008-02-15 15:57:20.000000000 -0500
> > > > +++ ide-fix/drivers/ide/ide-cd.c 2008-02-18 01:23:40.000000000 -0500
> > > > @@ -1207,9 +1207,13 @@ static ide_startstop_t cdrom_newpc_intr(
> > > > end_request:
> > > > if (blk_pc_request(rq)) {
> > > > unsigned long flags;
> > > > + unsigned int dlen = rq->data_len;
> > > > +
> > > > + if (dma)
> > > > + rq->data_len = 0;
> > > >
> > > > spin_lock_irqsave(&ide_lock, flags);
> > > > - if (__blk_end_request(rq, 0, rq->data_len))
> > > > + if (__blk_end_request(rq, 0, dlen))
> > > > BUG();
> > > > HWGROUP(drive)->rq = NULL;
> > > > spin_unlock_irqrestore(&ide_lock, flags);
> > > >
> > > > Thanks,
> > > > Kiyoshi Ueda
> > >
> > > next will test the one above...
> >
> >
> > confirmed here too - burning succeeds both with wodim and cdrdao.
>
> Thank you for testing, Laura, Andreas, Boris.
> And I'm really sorry about the bug, all.
>
>
> Bart,
> Please review and apply the patch below to fix the bug.
>
>
> [PATCH] ide-cd: fix missing residual count setting in DMA mode
>
> This patch fixes the missing residual count setting in DMA mode,
> which was introduced during the conversion to blk-end-request.
> The residual count could be used by the request submitter.
> So if it isn't set correctly, some upper layers does not work.
> (e.g. wodim for CD burning.)
>
> The bug is in only DMA mode.
> In PIO mode, we are setting the residual count correctly,
> so no need to fix.
>
> Signed-off-by: Kiyoshi Ueda <k-ueda@ct.jp.nec.com>
> Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
Looks fine, thanks for fixing it so quickly.
Applied.
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: 2.6.25-rc1/2 CD/DVD burning broken
2008-02-18 18:58 ` Kiyoshi Ueda
` (2 preceding siblings ...)
2008-02-18 20:20 ` Borislav Petkov
@ 2008-02-23 15:47 ` Andreas Schwab
2008-02-24 16:32 ` Borislav Petkov
3 siblings, 1 reply; 25+ messages in thread
From: Andreas Schwab @ 2008-02-23 15:47 UTC (permalink / raw)
To: Kiyoshi Ueda; +Cc: bzolnier, linux-kernel, jens.axboe, petkovbb, j-nomura
Kiyoshi Ueda <k-ueda@ct.jp.nec.com> writes:
> Could you try this patch?
> I've only done a compile test, so this patch may not work.
Unfortunately, that is not enough to get DVD burning working again.
This is the error that growisofs is getting:
ioctl(6, SG_IO, {'S', SG_DXFER_TO_DEV, cmd[10]=[2a, 00, 00, 00, 03, 10, 00, 00, 10, 00], mx_sb_len=64, iovec_count=0, dxfer_len=32768, timeout=60000, flags=0x3, data[32768]=["\360R\360\314Wt\277\241\36.\347\356L$\201]\210\372_~]I\213\366\253SV\2\372\356\312\257"...], status=02, masked_status=01, sb[0]=[], host_status=0, driver_status=0, resid=32768, duration=0, info=0x1}) = 0
write(2, ":-( unable to WRITE@LBA=310h: ", 30) = 30
It looks like the sense buffer is not filled in. In a successfully run
of growisfs under 2.6.24.2 the sense code is "LONG WRITE IN PROGRESS".
I also see that resid always equals dxfer_len even when the transfer was
successful, although growisofs does not seem to care. With 2.6.24.2
resid is only non-zero when a sense error occurred.
Andreas.
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply [flat|nested] 25+ messages in thread* Re: 2.6.25-rc1/2 CD/DVD burning broken
2008-02-23 15:47 ` 2.6.25-rc1/2 CD/DVD burning broken Andreas Schwab
@ 2008-02-24 16:32 ` Borislav Petkov
2008-02-24 16:59 ` Andreas Schwab
0 siblings, 1 reply; 25+ messages in thread
From: Borislav Petkov @ 2008-02-24 16:32 UTC (permalink / raw)
To: Andreas Schwab; +Cc: Kiyoshi Ueda, bzolnier, linux-kernel, jens.axboe, j-nomura
On Sat, Feb 23, 2008 at 04:47:50PM +0100, Andreas Schwab wrote:
> Kiyoshi Ueda <k-ueda@ct.jp.nec.com> writes:
>
> > Could you try this patch?
> > I've only done a compile test, so this patch may not work.
>
> Unfortunately, that is not enough to get DVD burning working again.
> This is the error that growisofs is getting:
>
> ioctl(6, SG_IO, {'S', SG_DXFER_TO_DEV, cmd[10]=[2a, 00, 00, 00, 03, 10, 00, 00, 10, 00], mx_sb_len=64, iovec_count=0, dxfer_len=32768, timeout=60000, flags=0x3, data[32768]=["\360R\360\314Wt\277\241\36.\347\356L$\201]\210\372_~]I\213\366\253SV\2\372\356\312\257"...], status=02, masked_status=01, sb[0]=[], host_status=0, driver_status=0, resid=32768, duration=0, info=0x1}) = 0
> write(2, ":-( unable to WRITE@LBA=310h: ", 30) = 30
>
> It looks like the sense buffer is not filled in. In a successfully run
> of growisfs under 2.6.24.2 the sense code is "LONG WRITE IN PROGRESS".
>
> I also see that resid always equals dxfer_len even when the transfer was
> successful, although growisofs does not seem to care. With 2.6.24.2
> resid is only non-zero when a sense error occurred.
Hm, strange,
burning a dvd here with growisofs works just fine. However, my
strace -v won't dereference the struct pointer passed to the ioctl:
...
open("/dev/dvd", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 5
...
ioctl(5, SG_IO, 0xbf804d14) = 0
...
--
Regards/Gruß,
Boris.
^ permalink raw reply [flat|nested] 25+ messages in thread* Re: 2.6.25-rc1/2 CD/DVD burning broken
2008-02-24 16:32 ` Borislav Petkov
@ 2008-02-24 16:59 ` Andreas Schwab
2008-02-25 2:49 ` Kiyoshi Ueda
0 siblings, 1 reply; 25+ messages in thread
From: Andreas Schwab @ 2008-02-24 16:59 UTC (permalink / raw)
To: petkovbb; +Cc: Kiyoshi Ueda, bzolnier, linux-kernel, jens.axboe, j-nomura
Borislav Petkov <petkovbb@googlemail.com> writes:
> burning a dvd here with growisofs works just fine.
You probably don't have a Pioneer.
> However, my strace -v won't dereference the struct pointer passed to
> the ioctl:
I use strace 4.5.16.
Andreas.
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: 2.6.25-rc1/2 CD/DVD burning broken
2008-02-24 16:59 ` Andreas Schwab
@ 2008-02-25 2:49 ` Kiyoshi Ueda
2008-02-25 9:23 ` Andreas Schwab
2008-02-25 19:38 ` Andreas Schwab
0 siblings, 2 replies; 25+ messages in thread
From: Kiyoshi Ueda @ 2008-02-25 2:49 UTC (permalink / raw)
To: Andreas Schwab, petkovbb
Cc: bzolnier, linux-kernel, jens.axboe, j-nomura, Kiyoshi Ueda
Hi Andreas,
On Sat, 23 Feb 2008 16:47:50 +0100, Andreas Schwab wrote:
> Kiyoshi Ueda <k-ueda@ct.jp.nec.com> writes:
>
> > Could you try this patch?
> > I've only done a compile test, so this patch may not work.
>
> Unfortunately, that is not enough to get DVD burning working again.
> This is the error that growisofs is getting:
>
> ioctl(6, SG_IO, {'S', SG_DXFER_TO_DEV, cmd[10]=[2a, 00, 00, 00, 03, 10,
> 00, 00, 10, 00], mx_sb_len=64, iovec_count=0, dxfer_len=32768,
> timeout=60000, flags=0x3,
> data[32768]=["\360R\360\314Wt\277\241\36.\347\356L$\201]\210\372_~]I\213\366\253SV\2\372\356\312\257"...],
> status=02, masked_status=01, sb[0]=[], host_status=0, driver_status=0,
> resid=32768, duration=0, info=0x1}) = 0
> write(2, ":-( unable to WRITE@LBA=310h: ", 30) = 30
>
> It looks like the sense buffer is not filled in. In a successfully run
> of growisfs under 2.6.24.2 the sense code is "LONG WRITE IN PROGRESS".
>
> I also see that resid always equals dxfer_len even when the transfer was
> successful, although growisofs does not seem to care. With 2.6.24.2
> resid is only non-zero when a sense error occurred.
I'm looking at this problem, but currently no idea why the conversion
to blk_end_request causes it.
growisofs (in dvd+rw-tools-7.0) seems to care only the sense buffer
of the sg_io_hdr, as you said.
(growisofs_mmc.cpp:poor_mans_pwrite64() and transport.hxx:transport())
So if the driver sets the sense code correctly, growisofs should work
correctly I think.
However, I can't find why the blk_end_request patch affects the sense
code setting.
Could you give me some more information below to help investigation?
o Have you tried bisecting the kernel changes to find suspicious
commit? If so, that information will be much appreciated.
o Is this problem 100% reproducible on your Pioneer drive?
o What is your dvd+rw-tools version?
o Do you get some messages from kernel like "DMA error" when
the problem happens?
And I'm sorry but I can't make enough time for this problem
until late this week.
Thanks,
Kiyoshi Ueda
^ permalink raw reply [flat|nested] 25+ messages in thread* Re: 2.6.25-rc1/2 CD/DVD burning broken
2008-02-25 2:49 ` Kiyoshi Ueda
@ 2008-02-25 9:23 ` Andreas Schwab
2008-02-25 19:38 ` Andreas Schwab
1 sibling, 0 replies; 25+ messages in thread
From: Andreas Schwab @ 2008-02-25 9:23 UTC (permalink / raw)
To: Kiyoshi Ueda; +Cc: petkovbb, bzolnier, linux-kernel, jens.axboe, j-nomura
"Kiyoshi Ueda" <k-ueda@ct.jp.nec.com> writes:
> o Have you tried bisecting the kernel changes to find suspicious
> commit? If so, that information will be much appreciated.
That is close to impossible. Intervening kernels either don't boot or
crash while burning. Especially the one with the bad commit crashes in
cdrom_newpc_intr almost immediately when burning starts.
> o Is this problem 100% reproducible on your Pioneer drive?
Yes. See the comment in the growisofs sources, this sense code is
Pioneer specific.
> o Do you get some messages from kernel like "DMA error" when
> the problem happens?
Never.
Andreas.
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: 2.6.25-rc1/2 CD/DVD burning broken
2008-02-25 2:49 ` Kiyoshi Ueda
2008-02-25 9:23 ` Andreas Schwab
@ 2008-02-25 19:38 ` Andreas Schwab
2008-02-25 20:45 ` Borislav Petkov
1 sibling, 1 reply; 25+ messages in thread
From: Andreas Schwab @ 2008-02-25 19:38 UTC (permalink / raw)
To: Kiyoshi Ueda; +Cc: petkovbb, bzolnier, linux-kernel, jens.axboe, j-nomura
"Kiyoshi Ueda" <k-ueda@ct.jp.nec.com> writes:
> I'm looking at this problem, but currently no idea why the conversion
> to blk_end_request causes it.
cdrom_newpc_intr apparently never sets rq->sense_len.
Andreas.
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: 2.6.25-rc1/2 CD/DVD burning broken
2008-02-25 19:38 ` Andreas Schwab
@ 2008-02-25 20:45 ` Borislav Petkov
2008-02-25 22:08 ` Andreas Schwab
0 siblings, 1 reply; 25+ messages in thread
From: Borislav Petkov @ 2008-02-25 20:45 UTC (permalink / raw)
To: Andreas Schwab; +Cc: Kiyoshi Ueda, bzolnier, linux-kernel, jens.axboe, j-nomura
On Mon, Feb 25, 2008 at 08:38:22PM +0100, Andreas Schwab wrote:
> "Kiyoshi Ueda" <k-ueda@ct.jp.nec.com> writes:
>
> > I'm looking at this problem, but currently no idea why the conversion
> > to blk_end_request causes it.
>
> cdrom_newpc_intr apparently never sets rq->sense_len.
>
actually it does, see the code chunk around line 1188 in 2.6.25-rc2, for
example.
--
Regards/Gruß,
Boris.
^ permalink raw reply [flat|nested] 25+ messages in thread* Re: 2.6.25-rc1/2 CD/DVD burning broken
2008-02-25 20:45 ` Borislav Petkov
@ 2008-02-25 22:08 ` Andreas Schwab
2008-02-26 4:24 ` Borislav Petkov
0 siblings, 1 reply; 25+ messages in thread
From: Andreas Schwab @ 2008-02-25 22:08 UTC (permalink / raw)
To: petkovbb; +Cc: Kiyoshi Ueda, bzolnier, linux-kernel, jens.axboe, j-nomura
Borislav Petkov <petkovbb@googlemail.com> writes:
> On Mon, Feb 25, 2008 at 08:38:22PM +0100, Andreas Schwab wrote:
>> "Kiyoshi Ueda" <k-ueda@ct.jp.nec.com> writes:
>>
>> > I'm looking at this problem, but currently no idea why the conversion
>> > to blk_end_request causes it.
>>
>> cdrom_newpc_intr apparently never sets rq->sense_len.
>>
>
> actually it does, see the code chunk around line 1188 in 2.6.25-rc2, for
> example.
Yes, it does, but it always adds zero.
Move counting of sense bytes into the transfer loop.
Signed-off-by: Andreas Schwab <schwab@suse.de>
---
drivers/ide/ide-cd.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
--- linux-2.6.25-rc3.orig/drivers/ide/ide-cd.c 2008-02-25 01:03:31.000000000 +0100
+++ linux-2.6.25-rc3/drivers/ide/ide-cd.c 2008-02-25 22:54:42.000000000 +0100
@@ -1182,11 +1182,10 @@ static ide_startstop_t cdrom_newpc_intr(
else
rq->data += blen;
}
+ if (!write && blk_sense_request(rq))
+ rq->sense_len += blen;
}
- if (write && blk_sense_request(rq))
- rq->sense_len += thislen;
-
/*
* pad, if necessary
*/
Andreas.
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: 2.6.25-rc1/2 CD/DVD burning broken
2008-02-25 22:08 ` Andreas Schwab
@ 2008-02-26 4:24 ` Borislav Petkov
2008-02-26 14:52 ` Andreas Schwab
0 siblings, 1 reply; 25+ messages in thread
From: Borislav Petkov @ 2008-02-26 4:24 UTC (permalink / raw)
To: Andreas Schwab; +Cc: Kiyoshi Ueda, bzolnier, linux-kernel, jens.axboe, j-nomura
On Mon, Feb 25, 2008 at 11:08:55PM +0100, Andreas Schwab wrote:
> Borislav Petkov <petkovbb@googlemail.com> writes:
>
> > On Mon, Feb 25, 2008 at 08:38:22PM +0100, Andreas Schwab wrote:
> >> "Kiyoshi Ueda" <k-ueda@ct.jp.nec.com> writes:
> >>
> >> > I'm looking at this problem, but currently no idea why the conversion
> >> > to blk_end_request causes it.
> >>
> >> cdrom_newpc_intr apparently never sets rq->sense_len.
> >>
> >
> > actually it does, see the code chunk around line 1188 in 2.6.25-rc2, for
> > example.
>
> Yes, it does, but it always adds zero.
yep, true. Does that fix your dvd burning problem?
> Move counting of sense bytes into the transfer loop.
>
> Signed-off-by: Andreas Schwab <schwab@suse.de>
>
> ---
> drivers/ide/ide-cd.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> --- linux-2.6.25-rc3.orig/drivers/ide/ide-cd.c 2008-02-25 01:03:31.000000000 +0100
> +++ linux-2.6.25-rc3/drivers/ide/ide-cd.c 2008-02-25 22:54:42.000000000 +0100
> @@ -1182,11 +1182,10 @@ static ide_startstop_t cdrom_newpc_intr(
> else
> rq->data += blen;
> }
> + if (!write && blk_sense_request(rq))
> + rq->sense_len += blen;
> }
>
> - if (write && blk_sense_request(rq))
> - rq->sense_len += thislen;
> -
> /*
> * pad, if necessary
> */
>
> Andreas.
>
> --
> Andreas Schwab, SuSE Labs, schwab@suse.de
> SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
> PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
> "And now for something completely different."
--
Regards/Gruß,
Boris.
^ permalink raw reply [flat|nested] 25+ messages in thread* Re: 2.6.25-rc1/2 CD/DVD burning broken
2008-02-26 4:24 ` Borislav Petkov
@ 2008-02-26 14:52 ` Andreas Schwab
2008-02-26 17:38 ` Borislav Petkov
0 siblings, 1 reply; 25+ messages in thread
From: Andreas Schwab @ 2008-02-26 14:52 UTC (permalink / raw)
To: petkovbb; +Cc: Kiyoshi Ueda, bzolnier, linux-kernel, jens.axboe, j-nomura
Borislav Petkov <petkovbb@googlemail.com> writes:
> On Mon, Feb 25, 2008 at 11:08:55PM +0100, Andreas Schwab wrote:
>> Borislav Petkov <petkovbb@googlemail.com> writes:
>>
>> > On Mon, Feb 25, 2008 at 08:38:22PM +0100, Andreas Schwab wrote:
>> >> "Kiyoshi Ueda" <k-ueda@ct.jp.nec.com> writes:
>> >>
>> >> > I'm looking at this problem, but currently no idea why the conversion
>> >> > to blk_end_request causes it.
>> >>
>> >> cdrom_newpc_intr apparently never sets rq->sense_len.
>> >>
>> >
>> > actually it does, see the code chunk around line 1188 in 2.6.25-rc2, for
>> > example.
>>
>> Yes, it does, but it always adds zero.
>
> yep, true. Does that fix your dvd burning problem?
Yes, sure.
Andreas.
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: 2.6.25-rc1/2 CD/DVD burning broken
2008-02-26 14:52 ` Andreas Schwab
@ 2008-02-26 17:38 ` Borislav Petkov
2008-02-26 20:01 ` Bartlomiej Zolnierkiewicz
0 siblings, 1 reply; 25+ messages in thread
From: Borislav Petkov @ 2008-02-26 17:38 UTC (permalink / raw)
To: bzolnier; +Cc: Andreas Schwab, Kiyoshi Ueda, linux-kernel, jens.axboe, j-nomura
On Tue, Feb 26, 2008 at 03:52:13PM +0100, Andreas Schwab wrote:
> Borislav Petkov <petkovbb@googlemail.com> writes:
>
> > On Mon, Feb 25, 2008 at 11:08:55PM +0100, Andreas Schwab wrote:
> >> Borislav Petkov <petkovbb@googlemail.com> writes:
> >>
> >> > On Mon, Feb 25, 2008 at 08:38:22PM +0100, Andreas Schwab wrote:
> >> >> "Kiyoshi Ueda" <k-ueda@ct.jp.nec.com> writes:
> >> >>
> >> >> > I'm looking at this problem, but currently no idea why the conversion
> >> >> > to blk_end_request causes it.
> >> >>
> >> >> cdrom_newpc_intr apparently never sets rq->sense_len.
> >> >>
> >> >
> >> > actually it does, see the code chunk around line 1188 in 2.6.25-rc2, for
> >> > example.
> >>
> >> Yes, it does, but it always adds zero.
> >
> > yep, true. Does that fix your dvd burning problem?
>
> Yes, sure.
>
> Andreas.
Bart,
please apply the enclosed patch since it fixes dvd burning with growisofs on
Pioneer drives as reported by Andreas.
Thanks.
---
From: Andreas Schwab <schwab@suse.de>
Move counting of sense bytes into the transfer loop.
Signed-off-by: Andreas Schwab <schwab@suse.de>
Acked-by: Borislav Petkov <petkovbb@gmail.com>
---
drivers/ide/ide-cd.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
--- linux-2.6.25-rc3.orig/drivers/ide/ide-cd.c 2008-02-25 01:03:31.000000000 +0100
+++ linux-2.6.25-rc3/drivers/ide/ide-cd.c 2008-02-25 22:54:42.000000000 +0100
@@ -1182,11 +1182,10 @@ static ide_startstop_t cdrom_newpc_intr(
else
rq->data += blen;
}
+ if (!write && blk_sense_request(rq))
+ rq->sense_len += blen;
}
- if (write && blk_sense_request(rq))
- rq->sense_len += thislen;
-
/*
* pad, if necessary
*/
--
Regards/Gruß,
Boris.
^ permalink raw reply [flat|nested] 25+ messages in thread* Re: 2.6.25-rc1/2 CD/DVD burning broken
2008-02-26 17:38 ` Borislav Petkov
@ 2008-02-26 20:01 ` Bartlomiej Zolnierkiewicz
0 siblings, 0 replies; 25+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2008-02-26 20:01 UTC (permalink / raw)
To: petkovbb; +Cc: Andreas Schwab, Kiyoshi Ueda, linux-kernel, jens.axboe, j-nomura
On Tuesday 26 February 2008, Borislav Petkov wrote:
> On Tue, Feb 26, 2008 at 03:52:13PM +0100, Andreas Schwab wrote:
> > Borislav Petkov <petkovbb@googlemail.com> writes:
> >
> > > On Mon, Feb 25, 2008 at 11:08:55PM +0100, Andreas Schwab wrote:
> > >> Borislav Petkov <petkovbb@googlemail.com> writes:
> > >>
> > >> > On Mon, Feb 25, 2008 at 08:38:22PM +0100, Andreas Schwab wrote:
> > >> >> "Kiyoshi Ueda" <k-ueda@ct.jp.nec.com> writes:
> > >> >>
> > >> >> > I'm looking at this problem, but currently no idea why the conversion
> > >> >> > to blk_end_request causes it.
> > >> >>
> > >> >> cdrom_newpc_intr apparently never sets rq->sense_len.
> > >> >>
> > >> >
> > >> > actually it does, see the code chunk around line 1188 in 2.6.25-rc2, for
> > >> > example.
> > >>
> > >> Yes, it does, but it always adds zero.
> > >
> > > yep, true. Does that fix your dvd burning problem?
> >
> > Yes, sure.
> >
> > Andreas.
>
> Bart,
>
> please apply the enclosed patch since it fixes dvd burning with growisofs on
> Pioneer drives as reported by Andreas.
>
> Thanks.
>
> ---
> From: Andreas Schwab <schwab@suse.de>
>
> Move counting of sense bytes into the transfer loop.
>
> Signed-off-by: Andreas Schwab <schwab@suse.de>
> Acked-by: Borislav Petkov <petkovbb@gmail.com>
applied, thanks!
^ permalink raw reply [flat|nested] 25+ messages in thread