diff options
-rw-r--r-- | include/linux/slub_def.h | 5 | ||||
-rw-r--r-- | mm/slub.c | 39 |
2 files changed, 2 insertions, 42 deletions
diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h index a6c43ec6a4a5..b33c0f2e61dc 100644 --- a/include/linux/slub_def.h +++ b/include/linux/slub_def.h | |||
@@ -96,11 +96,8 @@ struct kmem_cache { | |||
96 | * Defragmentation by allocating from a remote node. | 96 | * Defragmentation by allocating from a remote node. |
97 | */ | 97 | */ |
98 | int remote_node_defrag_ratio; | 98 | int remote_node_defrag_ratio; |
99 | struct kmem_cache_node *node[MAX_NUMNODES]; | ||
100 | #else | ||
101 | /* Avoid an extra cache line for UP */ | ||
102 | struct kmem_cache_node local_node; | ||
103 | #endif | 99 | #endif |
100 | struct kmem_cache_node *node[MAX_NUMNODES]; | ||
104 | }; | 101 | }; |
105 | 102 | ||
106 | /* | 103 | /* |
@@ -233,11 +233,7 @@ int slab_is_available(void) | |||
233 | 233 | ||
234 | static inline struct kmem_cache_node *get_node(struct kmem_cache *s, int node) | 234 | static inline struct kmem_cache_node *get_node(struct kmem_cache *s, int node) |
235 | { | 235 | { |
236 | #ifdef CONFIG_NUMA | ||
237 | return s->node[node]; | 236 | return s->node[node]; |
238 | #else | ||
239 | return &s->local_node; | ||
240 | #endif | ||
241 | } | 237 | } |
242 | 238 | ||
243 | /* Verify that a pointer has an address that is valid within a slab page */ | 239 | /* Verify that a pointer has an address that is valid within a slab page */ |
@@ -871,7 +867,7 @@ static inline void inc_slabs_node(struct kmem_cache *s, int node, int objects) | |||
871 | * dilemma by deferring the increment of the count during | 867 | * dilemma by deferring the increment of the count during |
872 | * bootstrap (see early_kmem_cache_node_alloc). | 868 | * bootstrap (see early_kmem_cache_node_alloc). |
873 | */ | 869 | */ |
874 | if (!NUMA_BUILD || n) { | 870 | if (n) { |
875 | atomic_long_inc(&n->nr_slabs); | 871 | atomic_long_inc(&n->nr_slabs); |
876 | atomic_long_add(objects, &n->total_objects); | 872 | atomic_long_add(objects, &n->total_objects); |
877 | } | 873 | } |
@@ -2112,7 +2108,6 @@ static inline int alloc_kmem_cache_cpus(struct kmem_cache *s) | |||
2112 | return s->cpu_slab != NULL; | 2108 | return s->cpu_slab != NULL; |
2113 | } | 2109 | } |
2114 | 2110 | ||
2115 | #ifdef CONFIG_NUMA | ||
2116 | static struct kmem_cache *kmem_cache_node; | 2111 | static struct kmem_cache *kmem_cache_node; |
2117 | 2112 | ||
2118 | /* | 2113 | /* |
@@ -2202,17 +2197,6 @@ static int init_kmem_cache_nodes(struct kmem_cache *s) | |||
2202 | } | 2197 | } |
2203 | return 1; | 2198 | return 1; |
2204 | } | 2199 | } |
2205 | #else | ||
2206 | static void free_kmem_cache_nodes(struct kmem_cache *s) | ||
2207 | { | ||
2208 | } | ||
2209 | |||
2210 | static int init_kmem_cache_nodes(struct kmem_cache *s) | ||
2211 | { | ||
2212 | init_kmem_cache_node(&s->local_node, s); | ||
2213 | return 1; | ||
2214 | } | ||
2215 | #endif | ||
2216 | 2200 | ||
2217 | static void set_min_partial(struct kmem_cache *s, unsigned long min) | 2201 | static void set_min_partial(struct kmem_cache *s, unsigned long min) |
2218 | { | 2202 | { |
@@ -3023,8 +3007,6 @@ void __init kmem_cache_init(void) | |||
3023 | int caches = 0; | 3007 | int caches = 0; |
3024 | struct kmem_cache *temp_kmem_cache; | 3008 | struct kmem_cache *temp_kmem_cache; |
3025 | int order; | 3009 | int order; |
3026 | |||
3027 | #ifdef CONFIG_NUMA | ||
3028 | struct kmem_cache *temp_kmem_cache_node; | 3010 | struct kmem_cache *temp_kmem_cache_node; |
3029 | unsigned long kmalloc_size; | 3011 | unsigned long kmalloc_size; |
3030 | 3012 | ||
@@ -3048,12 +3030,6 @@ void __init kmem_cache_init(void) | |||
3048 | 0, SLAB_HWCACHE_ALIGN | SLAB_PANIC, NULL); | 3030 | 0, SLAB_HWCACHE_ALIGN | SLAB_PANIC, NULL); |
3049 | 3031 | ||
3050 | hotplug_memory_notifier(slab_memory_callback, SLAB_CALLBACK_PRI); | 3032 | hotplug_memory_notifier(slab_memory_callback, SLAB_CALLBACK_PRI); |
3051 | #else | ||
3052 | /* Allocate a single kmem_cache from the page allocator */ | ||
3053 | kmem_size = sizeof(struct kmem_cache); | ||
3054 | order = get_order(kmem_size); | ||
3055 | kmem_cache = (void *)__get_free_pages(GFP_NOWAIT, order); | ||
3056 | #endif | ||
3057 | 3033 | ||
3058 | /* Able to allocate the per node structures */ | 3034 | /* Able to allocate the per node structures */ |
3059 | slab_state = PARTIAL; | 3035 | slab_state = PARTIAL; |
@@ -3064,7 +3040,6 @@ void __init kmem_cache_init(void) | |||
3064 | kmem_cache = kmem_cache_alloc(kmem_cache, GFP_NOWAIT); | 3040 | kmem_cache = kmem_cache_alloc(kmem_cache, GFP_NOWAIT); |
3065 | memcpy(kmem_cache, temp_kmem_cache, kmem_size); | 3041 | memcpy(kmem_cache, temp_kmem_cache, kmem_size); |
3066 | 3042 | ||
3067 | #ifdef CONFIG_NUMA | ||
3068 | /* | 3043 | /* |
3069 | * Allocate kmem_cache_node properly from the kmem_cache slab. | 3044 | * Allocate kmem_cache_node properly from the kmem_cache slab. |
3070 | * kmem_cache_node is separately allocated so no need to | 3045 | * kmem_cache_node is separately allocated so no need to |
@@ -3078,18 +3053,6 @@ void __init kmem_cache_init(void) | |||
3078 | kmem_cache_bootstrap_fixup(kmem_cache_node); | 3053 | kmem_cache_bootstrap_fixup(kmem_cache_node); |
3079 | 3054 | ||
3080 | caches++; | 3055 | caches++; |
3081 | #else | ||
3082 | /* | ||
3083 | * kmem_cache has kmem_cache_node embedded and we moved it! | ||
3084 | * Update the list heads | ||
3085 | */ | ||
3086 | INIT_LIST_HEAD(&kmem_cache->local_node.partial); | ||
3087 | list_splice(&temp_kmem_cache->local_node.partial, &kmem_cache->local_node.partial); | ||
3088 | #ifdef CONFIG_SLUB_DEBUG | ||
3089 | INIT_LIST_HEAD(&kmem_cache->local_node.full); | ||
3090 | list_splice(&temp_kmem_cache->local_node.full, &kmem_cache->local_node.full); | ||
3091 | #endif | ||
3092 | #endif | ||
3093 | kmem_cache_bootstrap_fixup(kmem_cache); | 3056 | kmem_cache_bootstrap_fixup(kmem_cache); |
3094 | caches++; | 3057 | caches++; |
3095 | /* Free temporary boot structure */ | 3058 | /* Free temporary boot structure */ |