Loading include/linux/slub_def.h +4 −7 Original line number Diff line number Diff line Loading @@ -75,12 +75,6 @@ struct kmem_cache { int offset; /* Free pointer offset. */ struct kmem_cache_order_objects oo; /* * Avoid an extra cache line for UP, SMP and for the node local to * struct kmem_cache. */ struct kmem_cache_node local_node; /* Allocation and freeing of slabs */ struct kmem_cache_order_objects max; struct kmem_cache_order_objects min; Loading @@ -102,6 +96,9 @@ struct kmem_cache { */ 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 }; Loading Loading @@ -140,7 +137,7 @@ struct kmem_cache { #ifdef CONFIG_ZONE_DMA #define SLUB_DMA __GFP_DMA /* Reserve extra caches for potential DMA use */ #define KMALLOC_CACHES (2 * SLUB_PAGE_SHIFT - 6) #define KMALLOC_CACHES (2 * SLUB_PAGE_SHIFT) #else /* Disable DMA functionality */ #define SLUB_DMA (__force gfp_t)0 Loading mm/slub.c +11 −22 Original line number Diff line number Diff line Loading @@ -2137,7 +2137,7 @@ static void free_kmem_cache_nodes(struct kmem_cache *s) for_each_node_state(node, N_NORMAL_MEMORY) { struct kmem_cache_node *n = s->node[node]; if (n && n != &s->local_node) if (n) kmem_cache_free(kmalloc_caches, n); s->node[node] = NULL; } Loading @@ -2146,20 +2146,10 @@ static void free_kmem_cache_nodes(struct kmem_cache *s) static int init_kmem_cache_nodes(struct kmem_cache *s, gfp_t gfpflags) { int node; int local_node; if (slab_state >= UP && (s < kmalloc_caches || s >= kmalloc_caches + KMALLOC_CACHES)) local_node = page_to_nid(virt_to_page(s)); else local_node = 0; for_each_node_state(node, N_NORMAL_MEMORY) { struct kmem_cache_node *n; if (local_node == node) n = &s->local_node; else { if (slab_state == DOWN) { early_kmem_cache_node_alloc(gfpflags, node); continue; Loading @@ -2172,7 +2162,6 @@ static int init_kmem_cache_nodes(struct kmem_cache *s, gfp_t gfpflags) return 0; } } s->node[node] = n; init_kmem_cache_node(n, s); } Loading Loading
include/linux/slub_def.h +4 −7 Original line number Diff line number Diff line Loading @@ -75,12 +75,6 @@ struct kmem_cache { int offset; /* Free pointer offset. */ struct kmem_cache_order_objects oo; /* * Avoid an extra cache line for UP, SMP and for the node local to * struct kmem_cache. */ struct kmem_cache_node local_node; /* Allocation and freeing of slabs */ struct kmem_cache_order_objects max; struct kmem_cache_order_objects min; Loading @@ -102,6 +96,9 @@ struct kmem_cache { */ 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 }; Loading Loading @@ -140,7 +137,7 @@ struct kmem_cache { #ifdef CONFIG_ZONE_DMA #define SLUB_DMA __GFP_DMA /* Reserve extra caches for potential DMA use */ #define KMALLOC_CACHES (2 * SLUB_PAGE_SHIFT - 6) #define KMALLOC_CACHES (2 * SLUB_PAGE_SHIFT) #else /* Disable DMA functionality */ #define SLUB_DMA (__force gfp_t)0 Loading
mm/slub.c +11 −22 Original line number Diff line number Diff line Loading @@ -2137,7 +2137,7 @@ static void free_kmem_cache_nodes(struct kmem_cache *s) for_each_node_state(node, N_NORMAL_MEMORY) { struct kmem_cache_node *n = s->node[node]; if (n && n != &s->local_node) if (n) kmem_cache_free(kmalloc_caches, n); s->node[node] = NULL; } Loading @@ -2146,20 +2146,10 @@ static void free_kmem_cache_nodes(struct kmem_cache *s) static int init_kmem_cache_nodes(struct kmem_cache *s, gfp_t gfpflags) { int node; int local_node; if (slab_state >= UP && (s < kmalloc_caches || s >= kmalloc_caches + KMALLOC_CACHES)) local_node = page_to_nid(virt_to_page(s)); else local_node = 0; for_each_node_state(node, N_NORMAL_MEMORY) { struct kmem_cache_node *n; if (local_node == node) n = &s->local_node; else { if (slab_state == DOWN) { early_kmem_cache_node_alloc(gfpflags, node); continue; Loading @@ -2172,7 +2162,6 @@ static int init_kmem_cache_nodes(struct kmem_cache *s, gfp_t gfpflags) return 0; } } s->node[node] = n; init_kmem_cache_node(n, s); } Loading