Commit 006d22d9 authored by Christoph Lameter's avatar Christoph Lameter Committed by Linus Torvalds

[PATCH] Optimize free_one_page

Free one_page currently adds the page to a fake list and calls
free_page_bulk.  Fee_page_bulk takes it off again and then calles
__free_one_page.

Make free_one_page go directly to __free_one_page.  Saves list on / off and
a temporary list in free_one_page for higher ordered pages.
Signed-off-by: default avatarChristoph Lameter <clameter@sgi.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 46a82b2d
...@@ -448,9 +448,11 @@ static void free_pages_bulk(struct zone *zone, int count, ...@@ -448,9 +448,11 @@ static void free_pages_bulk(struct zone *zone, int count,
static void free_one_page(struct zone *zone, struct page *page, int order) static void free_one_page(struct zone *zone, struct page *page, int order)
{ {
LIST_HEAD(list); spin_lock(&zone->lock);
list_add(&page->lru, &list); zone->all_unreclaimable = 0;
free_pages_bulk(zone, 1, &list, order); zone->pages_scanned = 0;
__free_one_page(page, zone ,order);
spin_unlock(&zone->lock);
} }
static void __free_pages_ok(struct page *page, unsigned int order) static void __free_pages_ok(struct page *page, unsigned int order)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment