slub: Move node determination out of hotpath

If the node does not change then there is no need to recalculate
the node from the page struct. So move the node determination
into the places where we acquire a new slab page.

Signed-off-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
Christoph Lameter 2011-04-15 14:48:15 -05:00 committed by Pekka Enberg
parent 01ad8a7bc2
commit dc1fb7f436
1 changed files with 5 additions and 4 deletions

View File

@ -1828,7 +1828,6 @@ load_freelist:
c->freelist = get_freepointer(s, object);
page->inuse = page->objects;
page->freelist = NULL;
c->node = page_to_nid(page);
unlock_out:
slab_unlock(page);
@ -1845,8 +1844,10 @@ another_slab:
new_slab:
page = get_partial(s, gfpflags, node);
if (page) {
c->page = page;
stat(s, ALLOC_FROM_PARTIAL);
load_from_page:
c->node = page_to_nid(page);
c->page = page;
goto load_freelist;
}
@ -1867,8 +1868,8 @@ new_slab:
slab_lock(page);
__SetPageSlubFrozen(page);
c->page = page;
goto load_freelist;
goto load_from_page;
}
if (!(gfpflags & __GFP_NOWARN) && printk_ratelimit())
slab_out_of_memory(s, gfpflags, node);