linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* IDE CDROM tail read errors
@ 2006-03-29 19:11 Krzysztof Halasa
  2006-03-30  8:19 ` Jan Engelhardt
  2006-03-30 11:18 ` Alan Cox
  0 siblings, 2 replies; 8+ messages in thread
From: Krzysztof Halasa @ 2006-03-29 19:11 UTC (permalink / raw)
  To: lkml; +Cc: linux-ide

Hi,

I have performed some CD-ROM read tests. Any thoughts?

The CD-ROM disc is a single Fedora Core 5 disc 1, TDK 650 MB CD-RW 4-speed.
This CD-RW was erased with "cdrecord blank=fast" before writing FC5d1
to it (cdrecord FC-5-i386-disc1.iso with no padding, default = TAO mode).
cdrecord is FC5's cdrecord-2.01.01.0.a03-3 (i386).

# ls -l FC-5-i386-disc1.iso 
687235072 Mar 21 00:13 FC-5-i386-disc1.iso

Both machines run vanilla kernels (with Alan's PATA libata patch in one
case).

# cdrecord -toc

first: 1 last 1
track:   1 lba:         0 (        0) 00:02:00 adr: 1 control: 4 mode: 1
track:lout lba:    335566 (  1342264) 74:36:16 adr: 1 control: 4 mode: -1

FC-5-i386-disc1.iso size = 335564 * 2048 bytes, not sure why TOC has
2 more sectors (8 512B sectors) but I'm not a CD expert.

--------------------------------------------------------------------

1. machine 1, VIA KT333 chipset, NEC DVD_RW ND-4550A IDE drive (secondary
   master, no other IDE devices), Linux 2.6.15 with drivers/ide driver:

# cat /dev/cdrom > img-15.iso
cat: /dev/cdrom: Input/output error

# cat /dev/cdrom > img-15a.iso
cat: /dev/cdrom: Input/output error

# ls -l
-rw-r--r-- 1 root root 687177728 Mar 29 15:51 img-15.iso
-rw-r--r-- 1 root root 687177728 Mar 29 15:58 img-15a.iso

The files are just truncated FC5d1 images (57344 bytes missing).

# cat /sys/block/hdc/size
1342264 (as in TOC)

VP_IDE: chipset revision 6
VP_IDE: not 100% native mode: will probe irqs later
VP_IDE: VIA vt8233a (rev 00) IDE UDMA133 controller on pci0000:00:11.1
    ide0: BM-DMA at 0x7800-0x7807, BIOS settings: hda:pio, hdb:pio
    ide1: BM-DMA at 0x7808-0x780f, BIOS settings: hdc:DMA, hdd:pio
hdc: _NEC DVD_RW ND-4550A, ATAPI CD/DVD-ROM drive
hdc: ATAPI 40X DVD-ROM DVD-R-RAM CD-R/RW drive, 2048kB Cache, UDMA(33)

hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 1342144
Buffer I/O error on device hdc, logical block 167768
...

Failed sector numbers are 1342144 - 1342256 (increments by 8),
logical blocks numbers are 167768 - 167782 (= sector numbers / 8).

It looks like an obvious prefetch bug but given the track length
(in TOC) I'm not sure.

--------------------------------------------------------------------

2. machine 1, the same VIA KT333 and NEC 4550A, Linux 2.6.16 + Alan's
   PATA libata 2.6.16-ide1 patch:

# cat /sys/block/sr0/size
1342264 (i.e., the same as with 2.6.15 + drivers/ide)

# cat /dev/cdrw > img-16a.iso
cat: /dev/cdrw: Input/output error

# cat /sys/block/sr0/size
1342256 (looks like it has been adjusted to .iso image size / 512 when
         the first I/O error occured)

# cat /dev/cdrw > img-16b.iso
# cat /dev/cdrw > img-16c.iso

All three files (including img-16a.iso) are exact copies of the original
FC5d1 image.

ata4: PATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0x7808 irq 15
via_do_set_mode: Mode=8 ast broken=Y udma=133 mul=4
t.act8b = 11, t.rec8b = 9, t.active = 10, t.recover = 10
FIT t.act8b = 10, t.rec8b = 8, t.active = 9, t.recover = 9
ata4: dev 0 cfg 49:0b00 82:0000 83:0000 84:0000 85:0000 86:0000 87:0000 88:0407
ata4: dev 0 ATAPI, max UDMA/33
via_do_set_mode: Mode=8 ast broken=Y udma=133 mul=4
t.act8b = 11, t.rec8b = 9, t.active = 10, t.recover = 10
FIT t.act8b = 10, t.rec8b = 8, t.active = 9, t.recover = 9
via_do_set_mode: Mode=12 ast broken=Y udma=133 mul=4
t.act8b = 3, t.rec8b = 1, t.active = 3, t.recover = 1
FIT t.act8b = 2, t.rec8b = 0, t.active = 2, t.recover = 0
via_do_set_mode: Mode=66 ast broken=Y udma=133 mul=4
t.act8b = 3, t.rec8b = 1, t.active = 3, t.recover = 1
FIT t.act8b = 2, t.rec8b = 0, t.active = 2, t.recover = 0
ata4: dev 0 configured for UDMA/33
scsi3 : pata_via
  Vendor: _NEC      Model: DVD_RW ND-4550A   Rev: 1.06
  Type:   CD-ROM                             ANSI SCSI revision: 05
sr0: scsi3-mmc drive: 40x/40x writer dvd-ram cd/rw xa/form2 cdda tray

end_request: I/O error, dev sr0, sector 1342256
Buffer I/O error on device sr0, logical block 167782
end_request: I/O error, dev sr0, sector 1342256
Buffer I/O error on device sr0, logical block 167782

(the above errors are printed at the end of first "cat", subsequent
"cat" commands are silent).

--------------------------------------------------------------------

3. An old 440BX notebook with CD-224E CD-ROM, Linux 2.6.16 and
drivers/ide driver.

The results are essentially identical to the first case - 2.6.15
with drivers/ide driver.

PIIX4: IDE controller at PCI slot 0000:00:07.1
PIIX4: chipset revision 1
PIIX4: not 100% native mode: will probe irqs later
    ide0: BM-DMA at 0xfcd0-0xfcd7, BIOS settings: hda:DMA, hdb:pio
    ide1: BM-DMA at 0xfcd8-0xfcdf, BIOS settings: hdc:DMA, hdd:pio
Probing IDE interface ide0...
hda: IC25N020ATMR04-0, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
hdc: CD-224E, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
hda: max request size: 512KiB
hda: 39070080 sectors (20003 MB) w/1740KiB Cache, CHS=16383/255/63, UDMA(33)
hda: cache flushes supported
 hda: hda1 hda2
hdc: ATAPI 24X CD-ROM drive, 128kB Cache, DMA

(Errors etc.)
-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: IDE CDROM tail read errors
  2006-03-29 19:11 IDE CDROM tail read errors Krzysztof Halasa
@ 2006-03-30  8:19 ` Jan Engelhardt
  2006-04-02 10:55   ` Krzysztof Halasa
  2006-03-30 11:18 ` Alan Cox
  1 sibling, 1 reply; 8+ messages in thread
From: Jan Engelhardt @ 2006-03-30  8:19 UTC (permalink / raw)
  To: Krzysztof Halasa; +Cc: lkml, linux-ide

>
># cdrecord -toc
>
>first: 1 last 1
>track:   1 lba:         0 (        0) 00:02:00 adr: 1 control: 4 mode: 1
>track:lout lba:    335566 (  1342264) 74:36:16 adr: 1 control: 4 mode: -1
>
>FC-5-i386-disc1.iso size = 335564 * 2048 bytes, not sure why TOC has
>2 more sectors (8 512B sectors) but I'm not a CD expert.
>

I have heard from friends that this is due to how readahead works. It 
reads beyond the end of the track, and logically, the hardware signals an 
error (leading to missing bytes at the end). It is said to be solved using 
the -pad option when writing CDs.

^^ I could not reproduce this oddness on my own, though.
Just a hint, maybe.


Jan Engelhardt
-- 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: IDE CDROM tail read errors
  2006-03-29 19:11 IDE CDROM tail read errors Krzysztof Halasa
  2006-03-30  8:19 ` Jan Engelhardt
@ 2006-03-30 11:18 ` Alan Cox
  2006-04-02 10:50   ` Krzysztof Halasa
  2006-04-04 19:09   ` Bill Davidsen
  1 sibling, 2 replies; 8+ messages in thread
From: Alan Cox @ 2006-03-30 11:18 UTC (permalink / raw)
  To: Krzysztof Halasa; +Cc: lkml, linux-ide

On Mer, 2006-03-29 at 21:11 +0200, Krzysztof Halasa wrote:
> # ls -l
> -rw-r--r-- 1 root root 687177728 Mar 29 15:51 img-15.iso
> -rw-r--r-- 1 root root 687177728 Mar 29 15:58 img-15a.iso
> 
> The files are just truncated FC5d1 images (57344 bytes missing).

The final partial read is dropped rather than partially completed.

> # cat /sys/block/sr0/size
> 1342264 (i.e., the same as with 2.6.15 + drivers/ide)
> 
> # cat /dev/cdrw > img-16a.iso
> cat: /dev/cdrw: Input/output error
> 
> # cat /sys/block/sr0/size
> 1342256 (looks like it has been adjusted to .iso image size / 512 when
>          the first I/O error occured)

The SCSI layer does this bit for everyone. Its actually not libata or
the PATA drivers that have done the work here. You should find ide-scsi
does the same.

I patched the old IDE driver a bit to try and deal with this and if you
want the patch to hack on and tidy up further feel free. 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: IDE CDROM tail read errors
  2006-03-30 11:18 ` Alan Cox
@ 2006-04-02 10:50   ` Krzysztof Halasa
  2006-04-04 19:09   ` Bill Davidsen
  1 sibling, 0 replies; 8+ messages in thread
From: Krzysztof Halasa @ 2006-04-02 10:50 UTC (permalink / raw)
  To: Alan Cox; +Cc: lkml, linux-ide

Alan Cox <alan@lxorguk.ukuu.org.uk> writes:

>> 1342256 (looks like it has been adjusted to .iso image size / 512 when
>>          the first I/O error occured)
>
> The SCSI layer does this bit for everyone. Its actually not libata or
> the PATA drivers that have done the work here. You should find ide-scsi
> does the same.

I see. I wonder if TOC track (in 2KB sectors) longer than ISO image
is a (recording) bug.

> I patched the old IDE driver a bit to try and deal with this and if you
> want the patch to hack on and tidy up further feel free. 

Thanks but... now I've converted my last machine to PATA-libata and
drivers/ide are dead for me:

- no way to hot-swap (permanent modules)
- IRQ timeouts on my EPIA-M (never seen with libata)
- now the "end of medium" problems
- code duplication and different device names
-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: IDE CDROM tail read errors
  2006-03-30  8:19 ` Jan Engelhardt
@ 2006-04-02 10:55   ` Krzysztof Halasa
  2006-04-02 18:13     ` Jan Engelhardt
  0 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Halasa @ 2006-04-02 10:55 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: lkml, linux-ide

Jan Engelhardt <jengelh@linux01.gwdg.de> writes:

>>first: 1 last 1
>>track:   1 lba:         0 (        0) 00:02:00 adr: 1 control: 4 mode: 1
>>track:lout lba:    335566 (  1342264) 74:36:16 adr: 1 control: 4 mode: -1
>>
>>FC-5-i386-disc1.iso size = 335564 * 2048 bytes, not sure why TOC has
>>2 more sectors (8 512B sectors) but I'm not a CD expert.
>>
>
> I have heard from friends that this is due to how readahead works. It 
> reads beyond the end of the track, and logically, the hardware signals an 
> error (leading to missing bytes at the end). It is said to be solved using 
> the -pad option when writing CDs.

You mean the read error and not TOC <> .iso track length differences?
-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: IDE CDROM tail read errors
  2006-04-02 10:55   ` Krzysztof Halasa
@ 2006-04-02 18:13     ` Jan Engelhardt
  0 siblings, 0 replies; 8+ messages in thread
From: Jan Engelhardt @ 2006-04-02 18:13 UTC (permalink / raw)
  To: Krzysztof Halasa; +Cc: lkml, linux-ide

>>
>> I have heard from friends that this is due to how readahead works. It 
>> reads beyond the end of the track, and logically, the hardware signals an 
>> error (leading to missing bytes at the end). It is said to be solved using 
>> the -pad option when writing CDs.
>
>You mean the read error and not TOC <> .iso track length differences?

Maps to

  if(toc_len >= iso + pad)
      ok;
  else
      b0rk on last sectors;



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: IDE CDROM tail read errors
  2006-03-30 11:18 ` Alan Cox
  2006-04-02 10:50   ` Krzysztof Halasa
@ 2006-04-04 19:09   ` Bill Davidsen
  2006-04-12  8:57     ` Alan Cox
  1 sibling, 1 reply; 8+ messages in thread
From: Bill Davidsen @ 2006-04-04 19:09 UTC (permalink / raw)
  To: Alan Cox; +Cc: lkml, linux-ide

Alan Cox wrote:
> On Mer, 2006-03-29 at 21:11 +0200, Krzysztof Halasa wrote:
>> # ls -l
>> -rw-r--r-- 1 root root 687177728 Mar 29 15:51 img-15.iso
>> -rw-r--r-- 1 root root 687177728 Mar 29 15:58 img-15a.iso
>>
>> The files are just truncated FC5d1 images (57344 bytes missing).
> 
> The final partial read is dropped rather than partially completed.
> 
>> # cat /sys/block/sr0/size
>> 1342264 (i.e., the same as with 2.6.15 + drivers/ide)
>>
>> # cat /dev/cdrw > img-16a.iso
>> cat: /dev/cdrw: Input/output error
>>
>> # cat /sys/block/sr0/size
>> 1342256 (looks like it has been adjusted to .iso image size / 512 when
>>          the first I/O error occured)
> 
> The SCSI layer does this bit for everyone. Its actually not libata or
> the PATA drivers that have done the work here. You should find ide-scsi
> does the same.
> 
> I patched the old IDE driver a bit to try and deal with this and if you
> want the patch to hack on and tidy up further feel free. 
> 
> 
Any hope in hell of getting this fixed? It's been broken for too long to 
remember. IIRC the problem is that on a read which hits EOF, instead of 
returning partial data read and no error, the status returned is just 
some "didn't work" variant and the partial read is lost. I also seem to 
remember that if the length of the ISO was a multiple of a magic number, 
32k, or the metric hexadecimal phase of the moon, you got a clean EOF.

As you say, ide-scsi fixes this, if the people who don't like it would 
make the alternatives work right it wouldn't be an issue...

Thanks for the info.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: IDE CDROM tail read errors
  2006-04-04 19:09   ` Bill Davidsen
@ 2006-04-12  8:57     ` Alan Cox
  0 siblings, 0 replies; 8+ messages in thread
From: Alan Cox @ 2006-04-12  8:57 UTC (permalink / raw)
  To: Bill Davidsen; +Cc: lkml, linux-ide

On Maw, 2006-04-04 at 15:09 -0400, Bill Davidsen wrote:
> Any hope in hell of getting this fixed? It's been broken for too long to 
> remember. IIRC the problem is that on a read which hits EOF, instead of 

The libata layer doesn't have the problem. So it will get fixed as the
libata PATA stuff gets upstream and merged


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2006-04-12  8:48 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-03-29 19:11 IDE CDROM tail read errors Krzysztof Halasa
2006-03-30  8:19 ` Jan Engelhardt
2006-04-02 10:55   ` Krzysztof Halasa
2006-04-02 18:13     ` Jan Engelhardt
2006-03-30 11:18 ` Alan Cox
2006-04-02 10:50   ` Krzysztof Halasa
2006-04-04 19:09   ` Bill Davidsen
2006-04-12  8:57     ` Alan Cox

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).