diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/slub.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -1966,6 +1966,7 @@ static void *__slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node, | |||
1966 | goto new_slab; | 1966 | goto new_slab; |
1967 | 1967 | ||
1968 | if (unlikely(!node_match(c, node))) { | 1968 | if (unlikely(!node_match(c, node))) { |
1969 | stat(s, ALLOC_NODE_MISMATCH); | ||
1969 | deactivate_slab(s, c); | 1970 | deactivate_slab(s, c); |
1970 | goto new_slab; | 1971 | goto new_slab; |
1971 | } | 1972 | } |
@@ -4671,6 +4672,7 @@ STAT_ATTR(FREE_REMOVE_PARTIAL, free_remove_partial); | |||
4671 | STAT_ATTR(ALLOC_FROM_PARTIAL, alloc_from_partial); | 4672 | STAT_ATTR(ALLOC_FROM_PARTIAL, alloc_from_partial); |
4672 | STAT_ATTR(ALLOC_SLAB, alloc_slab); | 4673 | STAT_ATTR(ALLOC_SLAB, alloc_slab); |
4673 | STAT_ATTR(ALLOC_REFILL, alloc_refill); | 4674 | STAT_ATTR(ALLOC_REFILL, alloc_refill); |
4675 | STAT_ATTR(ALLOC_NODE_MISMATCH, alloc_node_mismatch); | ||
4674 | STAT_ATTR(FREE_SLAB, free_slab); | 4676 | STAT_ATTR(FREE_SLAB, free_slab); |
4675 | STAT_ATTR(CPUSLAB_FLUSH, cpuslab_flush); | 4677 | STAT_ATTR(CPUSLAB_FLUSH, cpuslab_flush); |
4676 | STAT_ATTR(DEACTIVATE_FULL, deactivate_full); | 4678 | STAT_ATTR(DEACTIVATE_FULL, deactivate_full); |
@@ -4730,6 +4732,7 @@ static struct attribute *slab_attrs[] = { | |||
4730 | &alloc_from_partial_attr.attr, | 4732 | &alloc_from_partial_attr.attr, |
4731 | &alloc_slab_attr.attr, | 4733 | &alloc_slab_attr.attr, |
4732 | &alloc_refill_attr.attr, | 4734 | &alloc_refill_attr.attr, |
4735 | &alloc_node_mismatch_attr.attr, | ||
4733 | &free_slab_attr.attr, | 4736 | &free_slab_attr.attr, |
4734 | &cpuslab_flush_attr.attr, | 4737 | &cpuslab_flush_attr.attr, |
4735 | &deactivate_full_attr.attr, | 4738 | &deactivate_full_attr.attr, |