Re: Bug in linux kernel when playing DVDs.

From: James Courtier-Dutton (James@superbug.demon.co.uk)
Date: Tue Apr 29 2003 - 06:11:49 EST


Denis Vlasenko wrote:

>On 27 April 2003 13:47, James Courtier-Dutton wrote:
>
>
>>Hello,
>>
>>I have found a bug in the linux kernel when it plays DVDs. I use xine
>>(xine.sf.net) for playing DVDs.
>>At some point during the playing there is an error on the DVD. But
>>currently this error is not handled correctly by the linux kernel.
>>This puts the kernel into an uncertain state, causing the kernel to
>>take 100% CPU and fail all future read requests.
>>
>>
>...
>
>
>>Apr 26 17:16:24 games kernel: hdd: cdrom_decode_status: error=0x34
>>Apr 26 17:16:24 games kernel: hdd: ATAPI reset complete
>>Apr 26 17:16:25 games kernel: end_request: I/O error, dev 16:40
>>(hdd), sector 7750464
>>
>>
>...
>
>
>>DriveReady SeekComplete Error }
>>Apr 26 17:16:59 games kernel: hdd: cdrom_decode_status: error=0x34
>>Apr 26 17:16:59 games kernel: hdd: ATAPI reset complete
>>Apr 26 17:16:59 games kernel: end_request: I/O error, dev 16:40
>>(hdd), sector 7750468
>>
>>
>
>See? Sector # is increasing... Linux retries the read several times,
>then reports EIO to userspace and goes to next sectors. Unfortunately,
>they are bad too, so the loop repeats. Eventually it will pass
>by all bad sectors (if not, it's a bug) but it can take longish
>time.
>
>Apart of making max retry # settable by the user, I don't see how
>this can be made better. Pity. This is common problem on CDs...
>--
>vda
>
>
What is this EIO report. The CPU is never returned to user space apps,
so the app never sees any error.
As for retries, for DVD playing we do not want the Linux kernel to do
any retries, because during DVD playback, we just want a very quick
response saying there was an error. The DVD playing application can then
skip forward 0.5 seconds and continue. If one sector fails on a DVD,
there is little or not point in reading the next sector. One has to
start reading from the next VOBU. (i.e. about 0.5 seconds skip.)

Cheers
James

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



This archive was generated by hypermail 2b29 : Wed Apr 30 2003 - 22:00:31 EST