Re: [PATCH] Check for compound pages in set_page_dirty()

Christoph Lameter
2007-07-26T17:45:09Z

On Thu, 26 Jul 2007, Hugh Dickins wrote:

> I expect we could take that approach in the current kernel, yes
> (though it would put those compound tests into the bio code that
> Jens was preferring to remove). But I think not if your variable
> page_cache_size went in: imagine an mmap of the tail component page
> of an order-1 page_cache_size page, and that pte only being dirtied:
> wouldn't set_page_dirty on that page need to redirect to the head?

We would need to redirect all of the page state determinations and changes
to the head page anyways. So the memory.c code would have to deal with two
struct page pointers: One to the head where the state is kept and one to
the tail page that contains the actual chunk of data we are interested in.
The tail page pointer is only used for address determinations.

VM functions that manipulate the state of a page (like set_page_dirty)
could rely on only getting page heads.