|
@@ -1511,26 +1511,8 @@ new_slab:
|
|
|
|
|
|
if (new) {
|
|
if (new) {
|
|
c = get_cpu_slab(s, smp_processor_id());
|
|
c = get_cpu_slab(s, smp_processor_id());
|
|
- if (c->page) {
|
|
|
|
- /*
|
|
|
|
- * Someone else populated the cpu_slab while we
|
|
|
|
- * enabled interrupts, or we have gotten scheduled
|
|
|
|
- * on another cpu. The page may not be on the
|
|
|
|
- * requested node even if __GFP_THISNODE was
|
|
|
|
- * specified. So we need to recheck.
|
|
|
|
- */
|
|
|
|
- if (node_match(c, node)) {
|
|
|
|
- /*
|
|
|
|
- * Current cpuslab is acceptable and we
|
|
|
|
- * want the current one since its cache hot
|
|
|
|
- */
|
|
|
|
- discard_slab(s, new);
|
|
|
|
- slab_lock(c->page);
|
|
|
|
- goto load_freelist;
|
|
|
|
- }
|
|
|
|
- /* New slab does not fit our expectations */
|
|
|
|
|
|
+ if (c->page)
|
|
flush_slab(s, c);
|
|
flush_slab(s, c);
|
|
- }
|
|
|
|
slab_lock(new);
|
|
slab_lock(new);
|
|
SetSlabFrozen(new);
|
|
SetSlabFrozen(new);
|
|
c->page = new;
|
|
c->page = new;
|