Skip to contentSkip to conversation

DVD/CD Read Problem: cdrom_decode_status: status=0x51 {DriveReady SeekComplete Error}

DISCUSSION Andrey Borzenkov 3 participants 4 messages Jul 13, 2003 – Jul 15, 2003

lore
Share & tools
lore
#0 lore raw
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

#1 lore raw
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 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

#2 lore raw
In reply to Andrey Borzenkov

* 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 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

Quoted 8 lines
);
                        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.

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.

#3 lore raw

* 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 :|