[vdr] making VDR ext4-ready

Klaus Schmidinger Klaus.Schmidinger at cadsoft.de
Sat Jun 13 11:33:02 CEST 2009


On 06/09/09 00:47, Marcel Witte wrote:
> jori.hamalainen at teliasonera.com schrieb am Montag 08 Juni 2009:
>>>> On 07.06.2009 01:58, Marcel Witte wrote:
>>>> So ext4 seems to be perfect for a video-partition, but to make it more
>>>> perfect, it would be nice if VDR could use the fallocate()-systemcall
>>>> as mentioned in the article. This would prevent fragmentation in the
>>>> file
>> system.
>>
>>> Udo wrote:
>>> Sounds like a good plan, but unfortunately fallocate requires you to know
>> in
>>
>>> advance how big a file will be. This is not true for VDR recordings. And
>>> if you fallocate with too small or too big sizes, you'll end up with
>> fragmentation
>>
>>> or smaller chunks of unused space again. (All in all, this is probably
>>> only important for concurrent recordings anyway.)
>> Well you can predict file size for certain extent. As VDR has the split
>> recording
>> option built in. That is the maximum filesize.
>>
>> - If you have 1h10min timer.
>> - Allocate 1st file upto split size
>> - Calculate average BW at the same time you are recording
>>   - You could even store this
>> - If file is too small, allocate new file for remaining time with average
>> BW + overhead
>>
>> If you have 10min timer (or short timer which will cause filesize under
>> split size)
>> - if you store average BW what channels are having you could allocate
>> directly estimated size
>>
>> Naturally this is not 100% accurate, and would cause some big size
>> fragmentation.
>>
>> For EXT4 it would be nice:
>> - fallocate(4GB)
>> - open file for write
>> - close file after 3GB
>> - automatic fdeallocate(1GB)
> 
> This was exactly the idea I had... You know the average bitrate and the timer-
> length, or if used the length of one "split-file". And I think 99% of all 
> recordings will not be aborted while recording. So this would be the best way 
> to make use of the ext4-extends.
> 
> And because of the new libc/kernel you need: You can use #defines ;) also we 
> have a development branch (1.7.x) an until this goes stable I think ext4 is a 
> standard-file system (Fedora, Ubuntu and openSUSE will use it as default in 
> the next versions)

Just my 2ct: I find it strange that an application would have to "preallocate"
disk space etc. The file system should be able to handle these things in an
efficient way. It should not matter to VDR which file system a particular machine
actually uses. If one file system is better at handling large files, that's
fine, but don't force VDR to "know" about this...

Klaus



More information about the vdr mailing list