diff options
-rw-r--r-- | mm/slab.c | 43 |
1 files changed, 22 insertions, 21 deletions
@@ -821,7 +821,7 @@ static void init_reap_node(int cpu) | |||
821 | { | 821 | { |
822 | int node; | 822 | int node; |
823 | 823 | ||
824 | node = next_node(cpu_to_node(cpu), node_online_map); | 824 | node = next_node(cpu_to_mem(cpu), node_online_map); |
825 | if (node == MAX_NUMNODES) | 825 | if (node == MAX_NUMNODES) |
826 | node = first_node(node_online_map); | 826 | node = first_node(node_online_map); |
827 | 827 | ||
@@ -1050,7 +1050,7 @@ static inline int cache_free_alien(struct kmem_cache *cachep, void *objp) | |||
1050 | struct array_cache *alien = NULL; | 1050 | struct array_cache *alien = NULL; |
1051 | int node; | 1051 | int node; |
1052 | 1052 | ||
1053 | node = numa_node_id(); | 1053 | node = numa_mem_id(); |
1054 | 1054 | ||
1055 | /* | 1055 | /* |
1056 | * Make sure we are not freeing a object from another node to the array | 1056 | * Make sure we are not freeing a object from another node to the array |
@@ -1129,7 +1129,7 @@ static void __cpuinit cpuup_canceled(long cpu) | |||
1129 | { | 1129 | { |
1130 | struct kmem_cache *cachep; | 1130 | struct kmem_cache *cachep; |
1131 | struct kmem_list3 *l3 = NULL; | 1131 | struct kmem_list3 *l3 = NULL; |
1132 | int node = cpu_to_node(cpu); | 1132 | int node = cpu_to_mem(cpu); |
1133 | const struct cpumask *mask = cpumask_of_node(node); | 1133 | const struct cpumask *mask = cpumask_of_node(node); |
1134 | 1134 | ||
1135 | list_for_each_entry(cachep, &cache_chain, next) { | 1135 | list_for_each_entry(cachep, &cache_chain, next) { |
@@ -1194,7 +1194,7 @@ static int __cpuinit cpuup_prepare(long cpu) | |||
1194 | { | 1194 | { |
1195 | struct kmem_cache *cachep; | 1195 | struct kmem_cache *cachep; |
1196 | struct kmem_list3 *l3 = NULL; | 1196 | struct kmem_list3 *l3 = NULL; |
1197 | int node = cpu_to_node(cpu); | 1197 | int node = cpu_to_mem(cpu); |
1198 | int err; | 1198 | int err; |
1199 | 1199 | ||
1200 | /* | 1200 | /* |
@@ -1479,7 +1479,7 @@ void __init kmem_cache_init(void) | |||
1479 | * 6) Resize the head arrays of the kmalloc caches to their final sizes. | 1479 | * 6) Resize the head arrays of the kmalloc caches to their final sizes. |
1480 | */ | 1480 | */ |
1481 | 1481 | ||
1482 | node = numa_node_id(); | 1482 | node = numa_mem_id(); |
1483 | 1483 | ||
1484 | /* 1) create the cache_cache */ | 1484 | /* 1) create the cache_cache */ |
1485 | INIT_LIST_HEAD(&cache_chain); | 1485 | INIT_LIST_HEAD(&cache_chain); |
@@ -2121,7 +2121,7 @@ static int __init_refok setup_cpu_cache(struct kmem_cache *cachep, gfp_t gfp) | |||
2121 | } | 2121 | } |
2122 | } | 2122 | } |
2123 | } | 2123 | } |
2124 | cachep->nodelists[numa_node_id()]->next_reap = | 2124 | cachep->nodelists[numa_mem_id()]->next_reap = |
2125 | jiffies + REAPTIMEOUT_LIST3 + | 2125 | jiffies + REAPTIMEOUT_LIST3 + |
2126 | ((unsigned long)cachep) % REAPTIMEOUT_LIST3; | 2126 | ((unsigned long)cachep) % REAPTIMEOUT_LIST3; |
2127 | 2127 | ||
@@ -2452,7 +2452,7 @@ static void check_spinlock_acquired(struct kmem_cache *cachep) | |||
2452 | { | 2452 | { |
2453 | #ifdef CONFIG_SMP | 2453 | #ifdef CONFIG_SMP |
2454 | check_irq_off(); | 2454 | check_irq_off(); |
2455 | assert_spin_locked(&cachep->nodelists[numa_node_id()]->list_lock); | 2455 | assert_spin_locked(&cachep->nodelists[numa_mem_id()]->list_lock); |
2456 | #endif | 2456 | #endif |
2457 | } | 2457 | } |
2458 | 2458 | ||
@@ -2479,7 +2479,7 @@ static void do_drain(void *arg) | |||
2479 | { | 2479 | { |
2480 | struct kmem_cache *cachep = arg; | 2480 | struct kmem_cache *cachep = arg; |
2481 | struct array_cache *ac; | 2481 | struct array_cache *ac; |
2482 | int node = numa_node_id(); | 2482 | int node = numa_mem_id(); |
2483 | 2483 | ||
2484 | check_irq_off(); | 2484 | check_irq_off(); |
2485 | ac = cpu_cache_get(cachep); | 2485 | ac = cpu_cache_get(cachep); |
@@ -3012,7 +3012,7 @@ static void *cache_alloc_refill(struct kmem_cache *cachep, gfp_t flags) | |||
3012 | 3012 | ||
3013 | retry: | 3013 | retry: |
3014 | check_irq_off(); | 3014 | check_irq_off(); |
3015 | node = numa_node_id(); | 3015 | node = numa_mem_id(); |
3016 | ac = cpu_cache_get(cachep); | 3016 | ac = cpu_cache_get(cachep); |
3017 | batchcount = ac->batchcount; | 3017 | batchcount = ac->batchcount; |
3018 | if (!ac->touched && batchcount > BATCHREFILL_LIMIT) { | 3018 | if (!ac->touched && batchcount > BATCHREFILL_LIMIT) { |
@@ -3216,7 +3216,7 @@ static void *alternate_node_alloc(struct kmem_cache *cachep, gfp_t flags) | |||
3216 | 3216 | ||
3217 | if (in_interrupt() || (flags & __GFP_THISNODE)) | 3217 | if (in_interrupt() || (flags & __GFP_THISNODE)) |
3218 | return NULL; | 3218 | return NULL; |
3219 | nid_alloc = nid_here = numa_node_id(); | 3219 | nid_alloc = nid_here = numa_mem_id(); |
3220 | get_mems_allowed(); | 3220 | get_mems_allowed(); |
3221 | if (cpuset_do_slab_mem_spread() && (cachep->flags & SLAB_MEM_SPREAD)) | 3221 | if (cpuset_do_slab_mem_spread() && (cachep->flags & SLAB_MEM_SPREAD)) |
3222 | nid_alloc = cpuset_slab_spread_node(); | 3222 | nid_alloc = cpuset_slab_spread_node(); |
@@ -3281,7 +3281,7 @@ retry: | |||
3281 | if (local_flags & __GFP_WAIT) | 3281 | if (local_flags & __GFP_WAIT) |
3282 | local_irq_enable(); | 3282 | local_irq_enable(); |
3283 | kmem_flagcheck(cache, flags); | 3283 | kmem_flagcheck(cache, flags); |
3284 | obj = kmem_getpages(cache, local_flags, numa_node_id()); | 3284 | obj = kmem_getpages(cache, local_flags, numa_mem_id()); |
3285 | if (local_flags & __GFP_WAIT) | 3285 | if (local_flags & __GFP_WAIT) |
3286 | local_irq_disable(); | 3286 | local_irq_disable(); |
3287 | if (obj) { | 3287 | if (obj) { |
@@ -3389,6 +3389,7 @@ __cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid, | |||
3389 | { | 3389 | { |
3390 | unsigned long save_flags; | 3390 | unsigned long save_flags; |
3391 | void *ptr; | 3391 | void *ptr; |
3392 | int slab_node = numa_mem_id(); | ||
3392 | 3393 | ||
3393 | flags &= gfp_allowed_mask; | 3394 | flags &= gfp_allowed_mask; |
3394 | 3395 | ||
@@ -3401,7 +3402,7 @@ __cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid, | |||
3401 | local_irq_save(save_flags); | 3402 | local_irq_save(save_flags); |
3402 | 3403 | ||
3403 | if (nodeid == -1) | 3404 | if (nodeid == -1) |
3404 | nodeid = numa_node_id(); | 3405 | nodeid = slab_node; |
3405 | 3406 | ||
3406 | if (unlikely(!cachep->nodelists[nodeid])) { | 3407 | if (unlikely(!cachep->nodelists[nodeid])) { |
3407 | /* Node not bootstrapped yet */ | 3408 | /* Node not bootstrapped yet */ |
@@ -3409,7 +3410,7 @@ __cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid, | |||
3409 | goto out; | 3410 | goto out; |
3410 | } | 3411 | } |
3411 | 3412 | ||
3412 | if (nodeid == numa_node_id()) { | 3413 | if (nodeid == slab_node) { |
3413 | /* | 3414 | /* |
3414 | * Use the locally cached objects if possible. | 3415 | * Use the locally cached objects if possible. |
3415 | * However ____cache_alloc does not allow fallback | 3416 | * However ____cache_alloc does not allow fallback |
@@ -3453,8 +3454,8 @@ __do_cache_alloc(struct kmem_cache *cache, gfp_t flags) | |||
3453 | * We may just have run out of memory on the local node. | 3454 | * We may just have run out of memory on the local node. |
3454 | * ____cache_alloc_node() knows how to locate memory on other nodes | 3455 | * ____cache_alloc_node() knows how to locate memory on other nodes |
3455 | */ | 3456 | */ |
3456 | if (!objp) | 3457 | if (!objp) |
3457 | objp = ____cache_alloc_node(cache, flags, numa_node_id()); | 3458 | objp = ____cache_alloc_node(cache, flags, numa_mem_id()); |
3458 | 3459 | ||
3459 | out: | 3460 | out: |
3460 | return objp; | 3461 | return objp; |
@@ -3551,7 +3552,7 @@ static void cache_flusharray(struct kmem_cache *cachep, struct array_cache *ac) | |||
3551 | { | 3552 | { |
3552 | int batchcount; | 3553 | int batchcount; |
3553 | struct kmem_list3 *l3; | 3554 | struct kmem_list3 *l3; |
3554 | int node = numa_node_id(); | 3555 | int node = numa_mem_id(); |
3555 | 3556 | ||
3556 | batchcount = ac->batchcount; | 3557 | batchcount = ac->batchcount; |
3557 | #if DEBUG | 3558 | #if DEBUG |
@@ -3985,7 +3986,7 @@ static int do_tune_cpucache(struct kmem_cache *cachep, int limit, | |||
3985 | return -ENOMEM; | 3986 | return -ENOMEM; |
3986 | 3987 | ||
3987 | for_each_online_cpu(i) { | 3988 | for_each_online_cpu(i) { |
3988 | new->new[i] = alloc_arraycache(cpu_to_node(i), limit, | 3989 | new->new[i] = alloc_arraycache(cpu_to_mem(i), limit, |
3989 | batchcount, gfp); | 3990 | batchcount, gfp); |
3990 | if (!new->new[i]) { | 3991 | if (!new->new[i]) { |
3991 | for (i--; i >= 0; i--) | 3992 | for (i--; i >= 0; i--) |
@@ -4007,9 +4008,9 @@ static int do_tune_cpucache(struct kmem_cache *cachep, int limit, | |||
4007 | struct array_cache *ccold = new->new[i]; | 4008 | struct array_cache *ccold = new->new[i]; |
4008 | if (!ccold) | 4009 | if (!ccold) |
4009 | continue; | 4010 | continue; |
4010 | spin_lock_irq(&cachep->nodelists[cpu_to_node(i)]->list_lock); | 4011 | spin_lock_irq(&cachep->nodelists[cpu_to_mem(i)]->list_lock); |
4011 | free_block(cachep, ccold->entry, ccold->avail, cpu_to_node(i)); | 4012 | free_block(cachep, ccold->entry, ccold->avail, cpu_to_mem(i)); |
4012 | spin_unlock_irq(&cachep->nodelists[cpu_to_node(i)]->list_lock); | 4013 | spin_unlock_irq(&cachep->nodelists[cpu_to_mem(i)]->list_lock); |
4013 | kfree(ccold); | 4014 | kfree(ccold); |
4014 | } | 4015 | } |
4015 | kfree(new); | 4016 | kfree(new); |
@@ -4115,7 +4116,7 @@ static void cache_reap(struct work_struct *w) | |||
4115 | { | 4116 | { |
4116 | struct kmem_cache *searchp; | 4117 | struct kmem_cache *searchp; |
4117 | struct kmem_list3 *l3; | 4118 | struct kmem_list3 *l3; |
4118 | int node = numa_node_id(); | 4119 | int node = numa_mem_id(); |
4119 | struct delayed_work *work = to_delayed_work(w); | 4120 | struct delayed_work *work = to_delayed_work(w); |
4120 | 4121 | ||
4121 | if (!mutex_trylock(&cache_chain_mutex)) | 4122 | if (!mutex_trylock(&cache_chain_mutex)) |