slab: Common definition for kmem_cache_node
authorChristoph Lameter <cl@linux.com>
Thu, 10 Jan 2013 19:14:19 +0000 (19:14 +0000)
committerPekka Enberg <penberg@kernel.org>
Fri, 1 Feb 2013 10:32:09 +0000 (12:32 +0200)
Put the definitions for the kmem_cache_node structures together so that
we have one structure. That will allow us to create more common fields in
the future which could yield more opportunities to share code.

Signed-off-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
include/linux/slub_def.h
mm/slab.c
mm/slab.h

index 16341e5316de4901ea79361fc56d9e11d0c0b053..027276fa87132728d2c914ccc38fc09bc7602395 100644 (file)
@@ -53,17 +53,6 @@ struct kmem_cache_cpu {
 #endif
 };
 
-struct kmem_cache_node {
-       spinlock_t list_lock;   /* Protect partial list and nr_partial */
-       unsigned long nr_partial;
-       struct list_head partial;
-#ifdef CONFIG_SLUB_DEBUG
-       atomic_long_t nr_slabs;
-       atomic_long_t total_objects;
-       struct list_head full;
-#endif
-};
-
 /*
  * Word size structure that can be atomically updated or read and that
  * contains both the order and the number of objects that a slab of the
index c162b2eb493a6b2a662d714c064a7d9d317dbc46..17f8596145469abf0c12114297bc97fbe9d896e5 100644 (file)
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -285,23 +285,6 @@ struct arraycache_init {
        void *entries[BOOT_CPUCACHE_ENTRIES];
 };
 
-/*
- * The slab lists for all objects.
- */
-struct kmem_cache_node {
-       struct list_head slabs_partial; /* partial list first, better asm code */
-       struct list_head slabs_full;
-       struct list_head slabs_free;
-       unsigned long free_objects;
-       unsigned int free_limit;
-       unsigned int colour_next;       /* Per-node cache coloring */
-       spinlock_t list_lock;
-       struct array_cache *shared;     /* shared per node */
-       struct array_cache **alien;     /* on other nodes */
-       unsigned long next_reap;        /* updated without locking */
-       int free_touched;               /* updated without locking */
-};
-
 /*
  * Need this for bootstrapping a per node allocator.
  */
index f0a552ff7b9bc41b3fbd887512d9aec901d97b3d..f96b49e4704efb1d362ef10c6eacef81afb9e6a0 100644 (file)
--- a/mm/slab.h
+++ b/mm/slab.h
@@ -239,3 +239,35 @@ static inline struct kmem_cache *cache_from_obj(struct kmem_cache *s, void *x)
        return s;
 }
 #endif
+
+
+/*
+ * The slab lists for all objects.
+ */
+struct kmem_cache_node {
+       spinlock_t list_lock;
+
+#ifdef CONFIG_SLAB
+       struct list_head slabs_partial; /* partial list first, better asm code */
+       struct list_head slabs_full;
+       struct list_head slabs_free;
+       unsigned long free_objects;
+       unsigned int free_limit;
+       unsigned int colour_next;       /* Per-node cache coloring */
+       struct array_cache *shared;     /* shared per node */
+       struct array_cache **alien;     /* on other nodes */
+       unsigned long next_reap;        /* updated without locking */
+       int free_touched;               /* updated without locking */
+#endif
+
+#ifdef CONFIG_SLUB
+       unsigned long nr_partial;
+       struct list_head partial;
+#ifdef CONFIG_SLUB_DEBUG
+       atomic_long_t nr_slabs;
+       atomic_long_t total_objects;
+       struct list_head full;
+#endif
+#endif
+
+};