[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH]Fix: Init page count for all pages during higher order allocs



On Mon, Apr 29, 2002 at 11:40:21AM -0600, Eric W. Biederman wrote:
> Suparna Bhattacharya <suparna@in.ibm.com> writes:
> 
> > The call to set_page_count(page, 1) in page_alloc.c appears to happen 
> > only for the first page, for order 1 and higher allocations.
> > This leaves the count for the rest of the pages in that block 
> > uninitialised.
> 
> Actually it should be zero.
> 
> This is deliberate because high order pages should not be referenced by
> their partial pages.  

That sounds reasonable provided there is a way to identify the main 
page struct corresponding to an area that's part of a higher 
order page. 

> It might make sense to add a PG_large flag and
> then in the immediately following struct page add a pointer to the next
> page, so you can identify these pages by inspection.  Doing something
> similar to the PG_skip flag.

Maybe different solutions could emerge for this in 2.4 and 2.5. 

Even a PG_partial flag for the partial pages will enable us to
traverse back to the main page, and vice-versa to determine the
partial pages covered by the main page, without any additional
pointers. Is that an acceptable option for 2.4 ? (That's one
more page flag ...)

It would be good to have a way to determine the order directly
from the page struct, without such traversals, at least in 2.5. 

> 
> Beyond that I get nervous, that people will treat it as endorsement of
> doing a high order continuous allocation and then fragmenting the page.

I don't think it would amount to such an endorsement. It's just a matter
of replicating the settings from the main page to the partial pages - 
which might be considered an alternate protocol, though a little 
inefficient for really high orders. However, having the partial page 
counts zeroed out probably helps as a safeguard in some situations in
view of the page count sanity checks. Or are there any scenarios where 
you forsee a problem/breakage ?

Regards
Suparna

> 
> Eric
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/