Re: [S+Q Cleanup 3/6] slub: Remove static kmem_cache_cpu array for boot

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 17 Aug 2010, David Rientjes wrote:

> On Tue, 17 Aug 2010, Christoph Lameter wrote:
>
> > Index: linux-2.6/mm/slub.c
> > ===================================================================
> > --- linux-2.6.orig/mm/slub.c	2010-08-13 10:32:45.000000000 -0500
> > +++ linux-2.6/mm/slub.c	2010-08-13 10:32:50.000000000 -0500
> > @@ -2062,23 +2062,14 @@ init_kmem_cache_node(struct kmem_cache_n
> >  #endif
> >  }
> >
> > -static DEFINE_PER_CPU(struct kmem_cache_cpu, kmalloc_percpu[KMALLOC_CACHES]);
> > -
> >  static inline int alloc_kmem_cache_cpus(struct kmem_cache *s)
> >  {
> > -	if (s < kmalloc_caches + KMALLOC_CACHES && s >= kmalloc_caches)
> > -		/*
> > -		 * Boot time creation of the kmalloc array. Use static per cpu data
> > -		 * since the per cpu allocator is not available yet.
> > -		 */
> > -		s->cpu_slab = kmalloc_percpu + (s - kmalloc_caches);
> > -	else
> > -		s->cpu_slab =  alloc_percpu(struct kmem_cache_cpu);
> > +	BUILD_BUG_ON(PERCPU_DYNAMIC_EARLY_SIZE <
> > +			SLUB_PAGE_SHIFT * sizeof(struct kmem_cache));
>
> This fails with CONFIG_NODES_SHIFT=10 on x86_64, which means it will fail
> the ia64 defconfig as well.  struct kmem_cache stores nodemask pointers up
> to MAX_NUMNODES, which makes the conditional fail.

Hmmm... Wrong struct name. This needs to be struct kmem_cache_cpu not
struct kmem_cache. struct kmem_cache_cpu is sufficiently small.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxxx  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]