Re: 2.5.46: ide-cd cdrecord (almost) success report

From: Jens Axboe (axboe@suse.de)
Date: Thu Nov 07 2002 - 09:33:14 EST


On Wed, Nov 06 2002, Adam Kropelin wrote:
> On Wed, Nov 06, 2002 at 08:44:57AM +0100, Jens Axboe wrote:
> > On Wed, Nov 06 2002, Jens Axboe wrote:
> > > > when the cdrecord buffer underran was surprising, though: oops below.
> > > > Very repeatable. Can supply copious hw details if it helps.
> > >
> > > I'll try and reproduce that here, there's been a similar report (same
> > > oops) before. If you can just send me the dmesg output after a boot that
> > > should be fine.
> >
> > Could you reproduce with this patch? I'd like to see the request state
> > when this happens.
>
> Here you go... This was with max tags locked at 4. I've included some of
> the surrounding lines from cdrecord.

ok

> --Adam
>
> Track 01: 85 of 437 MB written (fifo 0%) [buf 31%] 3.3x./opt/schily/bin/cdrecord: Input/output error. write_g1: scsi sendcmd: no error
> CDB: 2A 00 00 00 AA BE 00 00 1F 00
> status: 0x1 (GOOD STATUS)
> resid: 63488
> cmd finished after 0.011s timeout 40s
>
> write track data: error after 89518080 bytes
> cdrom_newpc_intr: dev hdc: flags = REQ_RW REQ_NOMERGE REQ_STARTED REQ_BLOCK_PC REQ_FAILED REQ_QUIET
> sector 0, nr/cnr 124/8
> bio 00000000, biotail c1cd0860, buffer c968d000, data 00000000, len 63488
> cdb: 2a 00 00 00 aa be 00 00 1f 00 00 00 00 00 00 00
> hdc: padding 63488 bytes
> Sense Bytes: 70 00 00 00 00 00 00 12 00 00 00 00 00 00 00 00 00 00

>From the ide-cd POV, the best we can do here is just try to continue
safely in case of error. So a slight modification to last patch should
be fine, I think.

At least that is the atapi part of.

===== drivers/ide/ide-cd.c 1.32 vs edited =====
--- 1.32/drivers/ide/ide-cd.c Sun Nov 3 19:57:35 2002
+++ edited/drivers/ide/ide-cd.c Thu Nov 7 15:25:05 2002
@@ -1722,6 +1722,11 @@
                         blen = bio_iovec(rq->bio)->bv_len;
                 }
 
+ if (!ptr) {
+ printk("%s: confused, missing data\n", drive->name);
+ break;
+ }
+
                 if (blen > thislen)
                         blen = thislen;
 
@@ -1741,8 +1746,6 @@
          * pad, if necessary
          */
         if (len) {
- printk("%s: padding %u bytes\n", drive->name, len);
-
                 while (len) {
                         int pad = 0;
 

-- 
Jens Axboe

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



This archive was generated by hypermail 2b29 : Thu Nov 07 2002 - 22:00:48 EST