Re: 2.6.13 brings buffer underruns when recording DVDs in 16x (was Re: "Read my lips: no more merges" - aka Linux 2.6.14-rc1)

Andrew Morton
2005-09-14T08:31:26Z

Mathieu Fluhr <mfluhr@nero.com> wrote:
>
> According to the MMC documentation, you can thoeriticaly send at most
> 65535 (16 bits int) blocks in one WRITE(10) CDB. This would means
> sending a buffer of ~127 MB on case of writing a mode 1 data track (2048
> bytes per block)...
>
> Now, practically, it is really not safe to send more than 64 KB per CDB
> (Mostly device related). And with such values, you have the following:
> - at 100 Hz -> 64 KB * 100 = 6400 KB/s <=> ~4.62x DVD
> - at 250 Hz -> 64 KB * 250 = 16000 KB/s <=> ~11.55x DVD
> - at 1000 Hz -> 64 KB * 1000 = 64000 KB/s <=> ~46.20x DVD

But that implies that there's some piece of code somewhere (could be
userspace, could be kernel) which is doing a timer-based sleep() in between
each CDB. It shouldn't do that - it should be using the disk
controller's completion interrupt for synchronisation.

What userspace application are you using to write the DVDs, and is it
possible to test a different one?