--- include/linux/slub_def.h | 1 + mm/slub.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+) Index: slub/include/linux/slub_def.h =================================================================== --- slub.orig/include/linux/slub_def.h 2007-05-13 21:58:10.000000000 -0700 +++ slub/include/linux/slub_def.h 2007-05-13 21:58:13.000000000 -0700 @@ -39,6 +39,7 @@ struct kmem_cache { /* Allocation and freeing of slabs */ int objects; /* Number of objects in slab */ int refcount; /* Refcount for slab cache destroy */ + int min_objects; /* Minimum objects in per cpu slabs */ void (*ctor)(void *, struct kmem_cache *, unsigned long); const struct kmem_cache_ops *ops; int inuse; /* Offset to metadata */ Index: slub/mm/slub.c =================================================================== --- slub.orig/mm/slub.c 2007-05-13 21:58:10.000000000 -0700 +++ slub/mm/slub.c 2007-05-13 21:58:13.000000000 -0700 @@ -3771,6 +3771,19 @@ static ssize_t defrag_ratio_store(struct SLAB_ATTR(defrag_ratio); #endif +static ssize_t min_objects_show(struct kmem_cache *s, char *buf) +{ + return sprintf(buf, "%d\n", s->min_objects); +} + +static ssize_t min_objects_store(struct kmem_cache *s, + const char *buf, size_t length) +{ + s->min_objects = simple_strtoul(buf, NULL, 10); + return length; +} +SLAB_ATTR(min_objects); + static struct attribute * slab_attrs[] = { &slab_size_attr.attr, &object_size_attr.attr, @@ -3801,6 +3814,7 @@ static struct attribute * slab_attrs[] = #ifdef CONFIG_NUMA &defrag_ratio_attr.attr, #endif + &min_objects_attr.attr, NULL };