DVD/CD Read Problem: cdrom_decode_status: status=0x51 {DriveReady SeekComplete Error}
Quoted 4 lines
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 }
Quoted 1 line
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.
Quoted 3 lines
and sometimes:
Jul 13 00:15:03 joehill kernel: hdc: ide_intr: huh? expected NULL handler on
exit
Quoted 2 lines
This problem has been discussed several times before on this list[1], but
with
Quoted 4 lines
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
Quoted 3 lines
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 ...
[...]
Quoted 3 lines
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
Quoted 8 lines · Andrey Borzenkov
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 exitIs 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:
Quoted 23 lines
Quoted 4 lines
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 }
Quoted 1 line
Jul 13 00:15:03 joehill kernel: hdc: cdrom_decode_status:error=0x30LastFailedSense
0x03this 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 notcorrectabl
e */
ide_dump_status(drive, "media error (bad sector)",
stat
Quoted 8 lines
); cdrom_end_request(drive, 0);The above sense key is exactly
MEDIUM_ERRORbut driver never has chance to stop "retring zillion times" simply because it immediately falls down intodriver->erroragain. 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.
Quoted 1 line
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:
Quoted 2 lines
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 :|