Skip to content

Commit

Permalink
[PATCH] Optimize free_one_page
Browse files Browse the repository at this point in the history
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: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Christoph Lameter authored and Linus Torvalds committed Sep 26, 2006
1 parent 46a82b2 commit 006d22d
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions mm/page_alloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
LIST_HEAD(list);
list_add(&page->lru, &list);
free_pages_bulk(zone, 1, &list, order);
spin_lock(&zone->lock);
zone->all_unreclaimable = 0;
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)
Expand Down

0 comments on commit 006d22d

Please sign in to comment.