mm/slub: Define struct slab fields for CONFIG_SLUB_CPU_PARTIAL only when enabled
The fields 'next' and 'slabs' are only used when CONFIG_SLUB_CPU_PARTIAL is enabled. We can put their definition to #ifdef to prevent accidental use when disabled. Currenlty show_slab_objects() and slabs_cpu_partial_show() contain code accessing the slabs field that's effectively dead with CONFIG_SLUB_CPU_PARTIAL=n through the wrappers slub_percpu_partial() and slub_percpu_partial_read_once(), but to prevent a compile error, we need to hide all this code behind #ifdef. Signed-off-by: Vlastimil Babka <vbabka@suse.cz> Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> Reviewed-by: Roman Gushchin <guro@fb.com> Tested-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
This commit is contained in:
parent
662188c3a2
commit
9c01e9af17
@ -25,10 +25,12 @@ struct slab {
|
|||||||
union {
|
union {
|
||||||
struct list_head slab_list;
|
struct list_head slab_list;
|
||||||
struct rcu_head rcu_head;
|
struct rcu_head rcu_head;
|
||||||
|
#ifdef CONFIG_SLUB_CPU_PARTIAL
|
||||||
struct {
|
struct {
|
||||||
struct slab *next;
|
struct slab *next;
|
||||||
int slabs; /* Nr of slabs left */
|
int slabs; /* Nr of slabs left */
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
struct kmem_cache *slab_cache;
|
struct kmem_cache *slab_cache;
|
||||||
/* Double-word boundary */
|
/* Double-word boundary */
|
||||||
|
@ -5258,6 +5258,7 @@ static ssize_t show_slab_objects(struct kmem_cache *s,
|
|||||||
total += x;
|
total += x;
|
||||||
nodes[node] += x;
|
nodes[node] += x;
|
||||||
|
|
||||||
|
#ifdef CONFIG_SLUB_CPU_PARTIAL
|
||||||
slab = slub_percpu_partial_read_once(c);
|
slab = slub_percpu_partial_read_once(c);
|
||||||
if (slab) {
|
if (slab) {
|
||||||
node = slab_nid(slab);
|
node = slab_nid(slab);
|
||||||
@ -5270,6 +5271,7 @@ static ssize_t show_slab_objects(struct kmem_cache *s,
|
|||||||
total += x;
|
total += x;
|
||||||
nodes[node] += x;
|
nodes[node] += x;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5469,9 +5471,10 @@ static ssize_t slabs_cpu_partial_show(struct kmem_cache *s, char *buf)
|
|||||||
{
|
{
|
||||||
int objects = 0;
|
int objects = 0;
|
||||||
int slabs = 0;
|
int slabs = 0;
|
||||||
int cpu;
|
int cpu __maybe_unused;
|
||||||
int len = 0;
|
int len = 0;
|
||||||
|
|
||||||
|
#ifdef CONFIG_SLUB_CPU_PARTIAL
|
||||||
for_each_online_cpu(cpu) {
|
for_each_online_cpu(cpu) {
|
||||||
struct slab *slab;
|
struct slab *slab;
|
||||||
|
|
||||||
@ -5480,12 +5483,13 @@ static ssize_t slabs_cpu_partial_show(struct kmem_cache *s, char *buf)
|
|||||||
if (slab)
|
if (slab)
|
||||||
slabs += slab->slabs;
|
slabs += slab->slabs;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Approximate half-full slabs, see slub_set_cpu_partial() */
|
/* Approximate half-full slabs, see slub_set_cpu_partial() */
|
||||||
objects = (slabs * oo_objects(s->oo)) / 2;
|
objects = (slabs * oo_objects(s->oo)) / 2;
|
||||||
len += sysfs_emit_at(buf, len, "%d(%d)", objects, slabs);
|
len += sysfs_emit_at(buf, len, "%d(%d)", objects, slabs);
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#if defined(CONFIG_SLUB_CPU_PARTIAL) && defined(CONFIG_SMP)
|
||||||
for_each_online_cpu(cpu) {
|
for_each_online_cpu(cpu) {
|
||||||
struct slab *slab;
|
struct slab *slab;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user