Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6: (27 commits) SLUB: Fix memory hotplug with !NUMA slub: Move functions to reduce #ifdefs slub: Enable sysfs support for !CONFIG_SLUB_DEBUG SLUB: Optimize slab_free() debug check slub: Move NUMA-related functions under CONFIG_NUMA slub: Add lock release annotation slub: Fix signedness warnings slub: extract common code to remove objects from partial list without locking SLUB: Pass active and inactive redzone flags instead of boolean to debug functions slub: reduce differences between SMP and NUMA Revert "Slub: UP bandaid" percpu: clear memory allocated with the km allocator percpu: use percpu allocator on UP too percpu: reduce PCPU_MIN_UNIT_SIZE to 32k vmalloc: pcpu_get/free_vm_areas() aren't needed on UP SLUB: Fix merged slab cache names Slub: UP bandaid slub: fix SLUB_RESILIENCY_TEST for dynamic kmalloc caches slub: Fix up missing kmalloc_cache -> kmem_cache_node case for memoryhotplug slub: Add dummy functions for the !SLUB_DEBUG case ...
This commit is contained in:
commit
76c39e4fef
|
@ -87,7 +87,7 @@ struct kmem_cache {
|
||||||
unsigned long min_partial;
|
unsigned long min_partial;
|
||||||
const char *name; /* Name (only for display!) */
|
const char *name; /* Name (only for display!) */
|
||||||
struct list_head list; /* List of slab caches */
|
struct list_head list; /* List of slab caches */
|
||||||
#ifdef CONFIG_SLUB_DEBUG
|
#ifdef CONFIG_SYSFS
|
||||||
struct kobject kobj; /* For sysfs */
|
struct kobject kobj; /* For sysfs */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -96,11 +96,8 @@ struct kmem_cache {
|
||||||
* Defragmentation by allocating from a remote node.
|
* Defragmentation by allocating from a remote node.
|
||||||
*/
|
*/
|
||||||
int remote_node_defrag_ratio;
|
int remote_node_defrag_ratio;
|
||||||
struct kmem_cache_node *node[MAX_NUMNODES];
|
|
||||||
#else
|
|
||||||
/* Avoid an extra cache line for UP */
|
|
||||||
struct kmem_cache_node local_node;
|
|
||||||
#endif
|
#endif
|
||||||
|
struct kmem_cache_node *node[MAX_NUMNODES];
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -139,19 +136,16 @@ struct kmem_cache {
|
||||||
|
|
||||||
#ifdef CONFIG_ZONE_DMA
|
#ifdef CONFIG_ZONE_DMA
|
||||||
#define SLUB_DMA __GFP_DMA
|
#define SLUB_DMA __GFP_DMA
|
||||||
/* Reserve extra caches for potential DMA use */
|
|
||||||
#define KMALLOC_CACHES (2 * SLUB_PAGE_SHIFT)
|
|
||||||
#else
|
#else
|
||||||
/* Disable DMA functionality */
|
/* Disable DMA functionality */
|
||||||
#define SLUB_DMA (__force gfp_t)0
|
#define SLUB_DMA (__force gfp_t)0
|
||||||
#define KMALLOC_CACHES SLUB_PAGE_SHIFT
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We keep the general caches in an array of slab caches that are used for
|
* We keep the general caches in an array of slab caches that are used for
|
||||||
* 2^x bytes of allocations.
|
* 2^x bytes of allocations.
|
||||||
*/
|
*/
|
||||||
extern struct kmem_cache kmalloc_caches[KMALLOC_CACHES];
|
extern struct kmem_cache *kmalloc_caches[SLUB_PAGE_SHIFT];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sorry that the following has to be that ugly but some versions of GCC
|
* Sorry that the following has to be that ugly but some versions of GCC
|
||||||
|
@ -216,7 +210,7 @@ static __always_inline struct kmem_cache *kmalloc_slab(size_t size)
|
||||||
if (index == 0)
|
if (index == 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return &kmalloc_caches[index];
|
return kmalloc_caches[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
void *kmem_cache_alloc(struct kmem_cache *, gfp_t);
|
void *kmem_cache_alloc(struct kmem_cache *, gfp_t);
|
||||||
|
|
|
@ -353,7 +353,7 @@ config SLUB_DEBUG_ON
|
||||||
config SLUB_STATS
|
config SLUB_STATS
|
||||||
default n
|
default n
|
||||||
bool "Enable SLUB performance statistics"
|
bool "Enable SLUB performance statistics"
|
||||||
depends on SLUB && SLUB_DEBUG && SYSFS
|
depends on SLUB && SYSFS
|
||||||
help
|
help
|
||||||
SLUB statistics are useful to debug SLUBs allocation behavior in
|
SLUB statistics are useful to debug SLUBs allocation behavior in
|
||||||
order find ways to optimize the allocator. This should never be
|
order find ways to optimize the allocator. This should never be
|
||||||
|
|
|
@ -500,7 +500,9 @@ void *__kmalloc_node(size_t size, gfp_t gfp, int node)
|
||||||
} else {
|
} else {
|
||||||
unsigned int order = get_order(size);
|
unsigned int order = get_order(size);
|
||||||
|
|
||||||
ret = slob_new_pages(gfp | __GFP_COMP, get_order(size), node);
|
if (likely(order))
|
||||||
|
gfp |= __GFP_COMP;
|
||||||
|
ret = slob_new_pages(gfp, order, node);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
struct page *page;
|
struct page *page;
|
||||||
page = virt_to_page(ret);
|
page = virt_to_page(ret);
|
||||||
|
|
Loading…
Reference in New Issue