Commit dc1fb7f4 authored by Christoph Lameter's avatar Christoph Lameter Committed by Pekka Enberg

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: default avatarChristoph Lameter <cl@linux.com>
Signed-off-by: default avatarPekka Enberg <penberg@kernel.org>
parent 01ad8a7b
......@@ -1828,7 +1828,6 @@ static void *__slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
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 @@ static void *__slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
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 @@ static void *__slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
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);
......
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