Re: [RFC PATCH 3/10] define page_file_cache

Rik van Riel
2007-11-07T02:55:52Z

On Tue, 6 Nov 2007 18:23:44 -0800 (PST)
Christoph Lameter <clameter@sgi.com> wrote:

> On Sat, 3 Nov 2007, Rik van Riel wrote:
>
> > Define page_file_cache() function to answer the question:
> > is page backed by a file?
>
> Well its not clear what is meant by a file in the first place.
> By file you mean disk space in contrast to ram based filesystems?

Yes. I have improved the comment over page_file_cache() a bit:

/**
* page_file_cache(@page)
* Returns !0 if @page is page cache page backed by a regular filesystem,
* or 0 if @page is anonymous, tmpfs or otherwise ram or swap backed.
*
* We would like to get this info without a page flag, but the state
* needs to survive until the page is last deleted from the LRU, which
* could be as far down as __page_cache_release.
*/

> I think we could add a flag to the bdi to indicate wheter the backing
> store is a disk file. In fact you can also deduce if if a device has
> no writeback capability set in the BDI.
>
> > Unfortunately this needs to use a page flag, since the
> > PG_swapbacked state needs to be preserved all the way
> > to the point where the page is last removed from the
> > LRU. Trying to derive the status from other info in
> > the page resulted in wrong VM statistics in earlier
> > split VM patchsets.
>
> The bdi may avoid that extra flag.

The bdi will no longer be accessible by the time a page
makes it to free_hot_cold_page, which is one place in the
kernel where this information is needed.

--
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it." - Brian W. Kernighan