On Mon, Aug 22, 2005 at 11:17:21AM +0200, Ralf M?ller wrote: > The day before I tried to find out if somebody ever had implemented > something to prevent vdr to trash the file system buffers. I did this > because I hate to wait 20 seconds for vdr to re-read my recordings > list. Thanks, this is very much appreciated. I applied this patch on my vdr-1.3.30 today, and I hope it will remove the regular spin-ups of other video disks while playing back recordings from one disk (caused by some housekeeping task, perhaps related to timers, EPG or purging deleted recordings). > So I read about the usage of O_DIRECT and the trouble with it. Is there a summary of the problems somewhere? I've heard of Linux file system corruption in heavy database use (MySQL/InnoDB), but I'm not sure if there have been cases that have been tracked down to the use of O_DIRECT. I guess O_DIRECT won't work on NFS, but it would be a very bad idea to run a database on NFS anyway. > While googling about O_DIRECT I found the function posix_fadvise - > which I had never heard about before - can help to do something similar > without to have such an impact on the current programming scheme. > > Using this function I wrote a little patch for vdr 1.3.30 - if you are > interested have a look here: > > http://vdr.unetz.com/download/patches/vdr-avoidTrashing-0.2.0-plain-1.3.30.diff.gz Hmm, is there a reason why your WriteStream function doesn't simply do posix_fadvise(fd, 0, 0, POSIX_FADV_DONTNEED)? That would simplify the logic, and if I understood correctly, it should work equally well, except with some early 2.5 kernels. I understand that you will need to keep track on the offsets in ReadStream because of read-ahead. Marko