SLUB: this_cpu: Remove slub kmem_cache fields
authorChristoph Lameter <cl@linux-foundation.org>
Fri, 18 Dec 2009 22:26:22 +0000 (16:26 -0600)
committerPekka Enberg <penberg@cs.helsinki.fi>
Sun, 20 Dec 2009 08:17:59 +0000 (10:17 +0200)
commitff12059ed14b0773d7bbef86f98218ada6c20770
tree33b63b4f746e984e8421ea3624312bc98ccb2f37
parent756dee75872a2a764b478e18076360b8a4ec9045
SLUB: this_cpu: Remove slub kmem_cache fields

Remove the fields in struct kmem_cache_cpu that were used to cache data from
struct kmem_cache when they were in different cachelines. The cacheline that
holds the per cpu array pointer now also holds these values. We can cut down
the struct kmem_cache_cpu size to almost half.

The get_freepointer() and set_freepointer() functions that used to be only
intended for the slow path now are also useful for the hot path since access
to the size field does not require accessing an additional cacheline anymore.
This results in consistent use of functions for setting the freepointer of
objects throughout SLUB.

Also we initialize all possible kmem_cache_cpu structures when a slab is
created. No need to initialize them when a processor or node comes online.

Signed-off-by: Christoph Lameter <cl@linux-foundation.org>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
include/linux/slub_def.h
mm/slub.c