Messages in this thread Patch in this message | | | Date | Thu, 7 Nov 2002 15:33:14 +0100 | From | Jens Axboe <> | Subject | Re: 2.5.46: ide-cd cdrecord (almost) success report |
| |
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/
| |