The patch titled Subject: slub: bulk allocation from per cpu partial pages has been removed from the -mm tree. Its filename was slub-bulk-allocation-from-per-cpu-partial-pages.patch This patch was dropped because it had testing failures ------------------------------------------------------ From: Christoph Lameter <cl@xxxxxxxxx> Subject: slub: bulk allocation from per cpu partial pages Cover all of the per cpu objects available. Expand the bulk allocation support to drain the per cpu partial pages while interrupts are off. [akpm@xxxxxxxxxxxxxxxxxxxx: fix comments, code layout] Signed-off-by: Christoph Lameter <cl@xxxxxxxxx> Cc: Jesper Dangaard Brouer <brouer@xxxxxxxxxx> Cc: Pekka Enberg <penberg@xxxxxxxxxx> Cc: David Rientjes <rientjes@xxxxxxxxxx> Cc: Joonsoo Kim <iamjoonsoo.kim@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/slub.c | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff -puN mm/slub.c~slub-bulk-allocation-from-per-cpu-partial-pages mm/slub.c --- a/mm/slub.c~slub-bulk-allocation-from-per-cpu-partial-pages +++ a/mm/slub.c @@ -2769,15 +2769,42 @@ bool kmem_cache_alloc_bulk(struct kmem_c while (size) { void *object = c->freelist; - if (!object) - break; + if (unlikely(!object)) { + /* + * Check if there are remotely freed objects + * available in the page. + */ + object = get_freelist(s, c->page); + + if (!object) { + /* + * All objects in use. Let's check if + * we have other per cpu partial pages + * that have available objects. + */ + c->page = c->partial; + if (!c->page) { + /* No per cpu objects left */ + c->freelist = NULL; + break; + } + + /* Next per cpu partial page */ + c->partial = c->page->next; + c->freelist = get_freelist(s, c->page); + continue; + } + + } - c->freelist = get_freepointer(s, object); *p++ = object; size--; if (unlikely(flags & __GFP_ZERO)) memset(object, 0, s->object_size); + + c->freelist = get_freepointer(s, object); + } c->tid = next_tid(c->tid); _ Patches currently in -mm which might be from cl@xxxxxxxxx are mm-slab_common-support-the-slub_debug-boot-option-on-specific-object-size.patch mm-slab_common-support-the-slub_debug-boot-option-on-specific-object-size-fix.patch slab-correct-size_index-table-before-replacing-the-bootstrap-kmem_cache_node.patch linux-slabh-fix-three-off-by-one-typos-in-comment.patch slab-infrastructure-for-bulk-object-allocation-and-freeing-v3.patch slub-bulk-alloc-extract-objects-from-the-per-cpu-slab.patch page-flags-trivial-cleanup-for-pagetrans-helpers.patch page-flags-introduce-page-flags-policies-wrt-compound-pages.patch page-flags-define-pg_locked-behavior-on-compound-pages.patch page-flags-define-behavior-of-fs-io-related-flags-on-compound-pages.patch page-flags-define-behavior-of-lru-related-flags-on-compound-pages.patch page-flags-define-behavior-slb-related-flags-on-compound-pages.patch page-flags-define-behavior-of-xen-related-flags-on-compound-pages.patch page-flags-define-pg_reserved-behavior-on-compound-pages.patch page-flags-define-pg_swapbacked-behavior-on-compound-pages.patch page-flags-define-pg_swapcache-behavior-on-compound-pages.patch page-flags-define-pg_mlocked-behavior-on-compound-pages.patch page-flags-define-pg_uncached-behavior-on-compound-pages.patch page-flags-define-pg_uptodate-behavior-on-compound-pages.patch page-flags-look-on-head-page-if-the-flag-is-encoded-in-page-mapping.patch mm-sanitize-page-mapping-for-tail-pages.patch linux-next.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html