Re: POSIX_FADV_NOREUSE and O_STREAMING behavior in 2.6.7

From: David Rolenc
Date: Thu Aug 26 2004 - 14:46:13 EST


Is there any technical reason that we couldn't set a flag in the struct file* and put code in the read/write calls to handle shrinking the page cache? This is similar to what was done with O_STREAMING in 2.4. It seems like it would conform more to the behavior expected from POSIX_FADV_NOREUSE, and I wouldn't have to make a bunch of system calls :-)

-Dave


Robert Love wrote:

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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/





-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/