diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/slub.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/mm/slub.c b/mm/slub.c index 936f2b13a78e..a9b1337e81c2 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -2614,18 +2614,18 @@ static struct slab *get_partial_node(struct kmem_cache *s, if (!partial) { partial = slab; stat(s, ALLOC_FROM_PARTIAL); + + if ((slub_get_cpu_partial(s) == 0)) { + break; + } } else { put_cpu_partial(s, slab, 0); stat(s, CPU_PARTIAL_NODE); - partial_slabs++; - } -#ifdef CONFIG_SLUB_CPU_PARTIAL - if (partial_slabs > s->cpu_partial_slabs / 2) - break; -#else - break; -#endif + if (++partial_slabs > slub_get_cpu_partial(s) / 2) { + break; + } + } } spin_unlock_irqrestore(&n->list_lock, flags); return partial; |