Messages in this thread Patch in this message | | | From | Joonsoo Kim <> | Subject | [PATCH] slub: try to get cpu partial slab even if we get enough objects for cpu freelist | Date | Thu, 16 Aug 2012 00:38:04 +0900 |
| |
s->cpu_partial determine the maximum number of objects kept in the per cpu partial lists of a processor. Currently, it is used for not only per cpu partial list but also cpu freelist. Therefore get_partial_node() doesn't work properly according to our first intention.
Fix it as forcibly assigning 0 to objects count when we get for cpu freelist.
Signed-off-by: Joonsoo Kim <js1304@gmail.com> Cc: Christoph Lameter <cl@linux.com> Cc: David Rientjes <rientjes@google.com>
diff --git a/mm/slub.c b/mm/slub.c index efce427..88dca1d 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -1550,7 +1550,12 @@ static void *get_partial_node(struct kmem_cache *s, c->page = page; stat(s, ALLOC_FROM_PARTIAL); object = t; - available = page->objects - page->inuse; + + /* + * We don't want to stop without trying to get + * cpu partial slab. So, forcibly set 0 to available + */ + available = 0; } else { available = put_cpu_partial(s, page, 0); stat(s, CPU_PARTIAL_NODE); -- 1.7.9.5
| |