Re: [RFC PATCH 3/10] define page_file_cache

Rik van Riel
2007-11-07T03:17:10Z

On Tue, 6 Nov 2007 19:02:47 -0800 (PST)
Christoph Lameter <clameter@sgi.com> wrote:
> On Tue, 6 Nov 2007, Rik van Riel wrote:
>
> > > 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.
>
> At that point you need only information about which list the page
> was put on. Dont we need something like PageLRU -> PageFileLRU
> and PageMemLRU?

That is exactly why we need a page flag. If you have a better
name for the page flag, please let me know.

Note that the kind of page needs to be separate from PageLRU,
since pages are taken off of and put back onto LRUs all the
time.

> The page may change its nature I think? What if a page becomes
> swap backed?

Every anonymous, tmpfs or shared memory segment page is potentially
swap backed. That is the whole point of the PG_swapbacked flag.

A page from a filesystem like ext3 or NFS cannot suddenly turn into
a swap backed page. This page "nature" is not changed during the
lifetime of a page.

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