Re: Extend clear_page by an order parameter

From: Andrew Morton
Date: Sun Jan 23 2005 - 02:48:59 EST


Christoph Lameter <clameter@xxxxxxx> wrote:
>
> The zeroing of a page of a arbitrary order in page_alloc.c and in hugetlb.c may benefit from a
> clear_page that is capable of zeroing multiple pages at once (and scrubd
> too but that is now an independent patch). The following patch extends
> clear_page with a second parameter specifying the order of the page to be zeroed to allow an
> efficient zeroing of pages. Hope I caught everything....
>

Sorry, I take it back. As Paul says:

: Wouldn't it be nicer to call the version that takes the order
: parameter "clear_pages" and then define clear_page(p) as
: clear_pages(p, 0) ?

It would make the patch considerably smaller, and our naming is all over
the place anyway...

> -static inline void prep_zero_page(struct page *page, int order, int gfp_flags)
> +void prep_zero_page(struct page *page, unsigned int order, unsigned int gfp_flags)
> {
> int i;
>
> BUG_ON((gfp_flags & (__GFP_WAIT | __GFP_HIGHMEM)) == __GFP_HIGHMEM);
> + if (!PageHighMem(page)) {
> + clear_page(page_address(page), order);
> + return;
> + }
> +
> for(i = 0; i < (1 << order); i++)
> clear_highpage(page + i);
> }

I'd have thought that we'd want to make the new clear_pages() handle
highmem pages too, if only from a regularity POV. x86 hugetlbpages could
use it then, if someone thinks up a fast page-clearer.
-
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/