> I get the following errors and an unkillable process when trying to play
> DVDs, using the latest 2.5.75:
>
> Jul 13 00:15:03 joehill kernel: hdc: cdrom_decode_status: status=0x51 {
DriveReady SeekComplete Error }
> Jul 13 00:15:03 joehill kernel: hdc: cdrom_decode_status:
error=0x30LastFailedSense 0x03
this is ide-cd problem. drivers/ide/ide-cd:cdrom_decode_status():
} else if ((err & ~ABRT_ERR) != 0) {
/* Go to the default handler
for other errors. */
DRIVER(drive)->error(drive,
"cdrom_decode_status",stat);
return 1;
} else if (sense_key == MEDIUM_ERROR) {
/* No point in re-trying a zillion times on a bad
* sector... If we got here the error is not
correctabl
e */
ide_dump_status (drive, "media error (bad sector)",
stat
);
cdrom_end_request(drive, 0);
The above sense key is exactly MEDIUM_ERROR but driver never has chance to
stop "retring zillion times" simply because it immediately falls down into
driver->error again. So "innocent" media error results half an hour retries
and disabled DMA.
> and sometimes:
>
> Jul 13 00:15:03 joehill kernel: hdc: ide_intr: huh? expected NULL handler on
exit
>
> This problem has been discussed several times before on this list[1], but
with
> no resolution or fixes that I can find.
>
> I don't believe this is a userspace issue. Other OS's are able to deal with
> playing video DVDs by skipping read errors quickly. There should be some
one
> way to tell the kernel not to keep retrying for certain (i.e., non-data)
> CD/DVDs. I can't see any possible way to do this in application space,
> though.
they are not user-space issues. Try to swap two conditions above and see what
happens. I cannot test it anymore for reason below ...
[...]
> I'm not sure why it's getting errors at all, incidentally, as this occurs
> with brand new DVDs out of the shrink wrap, and a relatively new DVD
> player (HP F2015B, manufactured by Quanta).
I just had to ditch brand new Toshiba SD-R1312 because I got exactly the same
errors on multisession CDs. Single sessions were OK but multisessions almost
never could be reas properly resulting in flood of positioning errors.
While this may be Linux bug in read-ahead handling, this drive usually had the
same problem under Windows (and even after I let it be replaced) so I guess
it is firmware problem. Some of them are just beter than other :)
So I do not have drive that readily generates these errors anymore and cannot
test this patch.
regards
-andrey
On Sun, Jul 13, 2003 at 07:51:07PM +0400, Andrey Borzenkov wrote:
> this is ide-cd problem. drivers/ide/ide-cd:cdrom_decode_status():
> [ ... ]
> } else if ((err & ~ABRT_ERR) != 0) {
> [ ... ]
> } else if (sense_key == MEDIUM_ERROR) {
> [ ... ]
> they are not user-space issues. Try to swap two conditions above and see what
> happens. I cannot test it anymore for reason below ...
Swapping these conditions improved the situation quite a lot.
Subjectively, I would say it's 90% better. By extending the read-ahead
cache to 32M, I can play the DVD almost perfectly with those conditions
(ABRT_ERR and MEDIUM_ERROR) swapped.
Also, for the first time, I get messages of this sort in syslog:
Jul 13 22:22:47 joehill kernel: end_request: I/O error, dev hdc, sector 7865320
Jul 13 22:22:47 joehill kernel: Buffer I/O error on device hdc, logical block 983165
Before, the only sorts of errors I ever got were:
Jul 13 00:14:35 joehill kernel: hdc: cdrom_decode_status: status=0x51 { DriveReady SeekComplete Error }
Jul 13 00:14:35 joehill kernel: hdc: cdrom_decode_status: error=0x30LastFailedSense 0x03
Jul 13 00:14:35 joehill kernel: hdc: ide_intr: huh? expected NULL handler on exit
Is there a reason these conditions should *not* be swapped? Is there
something I can test? Otherwise, my problem is basically fixed by this
change.
--Adam Kessel
* domenica 13 luglio 2003, alle 19:51, Andrey Borzenkov scrive:
>> I get the following errors and an unkillable process when trying to play
>> DVDs, using the latest 2.5.75:
>> Jul 13 00:15:03 joehill kernel: hdc: cdrom_decode_status: status=0x51 {
> DriveReady SeekComplete Error }
>> Jul 13 00:15:03 joehill kernel: hdc: cdrom_decode_status:
> error=0x30LastFailedSense 0x03
> this is ide-cd problem. drivers/ide/ide-cd:cdrom_decode_status():
> } else if ((err & ~ABRT_ERR) != 0) {
> /* Go to the default handler
> for other errors. */
> DRIVER(drive)->error(drive,
> "cdrom_decode_status",stat);
> return 1;
> } else if (sense_key == MEDIUM_ERROR) {
> /* No point in re-trying a zillion times on a bad
> * sector... If we got here the error is not
> correctabl
> e */
> ide_dump_status (drive, "media error (bad sector)",
> stat
> );
> cdrom_end_request(drive, 0);
> The above sense key is exactly MEDIUM_ERROR but driver never has chance to
> stop "retring zillion times" simply because it immediately falls down into
> driver->error again. So "innocent" media error results half an hour retries
> and disabled DMA.
Yesterday I've found a similar problem using 2.5.75. Trying to read a DVD
with a ASUS CD-S500/A the machine gives some errors in log then freezes.
>From log:
kernel: hdb: timeout waiting for DMA
kernel: hdb: timeout waiting for DMA
kernel: hdb: (__ide_dma_test_irq) called while not waiting
kernel: hdb: status timeout: status=0xd0 { Busy }
kernel: hdb: status timeout: error=0x00
kernel: hdb: drive not ready for command
kernel: hdb: ATAPI reset complete
kernel: hdb: cdrom_decode_status: status=0x51 { DriveReady SeekComplete Error }
kernel: hdb: cdrom_decode_status: error=0x30LastFailedSense 0x03
I've swapped the two conditions and after 5 "Bad Sector" the machine runs normally.
* marted? 15 luglio 2003, alle 02:03, Federico Stella scrive:
> Yesterday I've found a similar problem using 2.5.75. Trying to read a DVD
> with a ASUS CD-S500/A the machine gives some errors in log then freezes.
s/CD-S500\/A/DVD-ROM E616/
I should have more sleep overnight :|