lkml.org 
[lkml]   [2004]   [Aug]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: POSIX_FADV_NOREUSE and O_STREAMING behavior in 2.6.7
From
Date
On Thu, 2004-08-26 at 11:39 -0600, David Rolenc wrote:
> I am trying to get O_STREAMING (Robert Love patch for 2.4) behavior in
> 2.6 and just a glance at fadvise.c suggests that POSIX_FADV_NOREUSE is
> not implemented any differently than POSIX_FADV_WILLNEED. Am I missing
> something?

Yes, they are currently the same. Their difference in theory is subtle:
NOREUSE says "I will use this once in the future" and WILLNEED says "I
will use this [some number of times] in the future".

So for both of them, you want to keep the data in the page cache. But
for NOREUSE you could do drop-behind of the pages. But Linux does not
currently do drop-behind, so we have them both do the same thing.

> I want to read data from disk with readahead and drop the
> data from the page cache as soon as I am done with it. Do I have to call
> fadvise with POSIX_FADV_DONTNEED after every read?

Yes, you do. Or every couple of reads.

The sort of applications that need DONTNEED already are setup in a way
to make that easy. You either have a streaming loop, like:

do {
read
process
} while (repeat);

Or you are readings lots of files (like updatedb).

In the first case, just stick the fadvise call after the processing. In
the latter case, call fadvise before closing the file.

You don't _have_ to call fadvise after every reading. Just whenever you
want to drop the pages. Whenever it makes sense.

Robert Love


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

\
 
 \ /
  Last update: 2005-03-22 14:05    [W:0.049 / U:0.256 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site