Index: linux-2.6.21-rc7-mm1/Documentation/vm/slabinfo.c =================================================================== --- linux-2.6.21-rc7-mm1.orig/Documentation/vm/slabinfo.c 2007-04-25 12:46:18.000000000 -0700 +++ linux-2.6.21-rc7-mm1/Documentation/vm/slabinfo.c 2007-04-25 12:46:24.000000000 -0700 @@ -26,6 +26,7 @@ int skip_zero = 1; int show_numa = 0; int show_track = 0; int validate = 0; +int shrink = 0; int page_size; @@ -47,7 +48,7 @@ void usage(void) "-a|--aliases Show aliases\n" "-h|--help Show usage information\n" "-n|--numa Show NUMA information\n" - "-p|--parameters Show global parameters\n" + "-r|--reduce Shrink slabs\n" "-v|--validate Validate slabs\n" "-t|--tracking Show alloc/free information\n" "-s|--slabs Show slabs\n" @@ -170,6 +171,11 @@ void slab_validate(char *name) set_obj("validate", 1); } +void slab_shrink(char *name) +{ + set_obj("shrink", 1); +} + int line = 0; void first_line(void) @@ -296,6 +302,7 @@ struct option opts[] = { { "zero", 0, NULL, 'z' }, { "help", 0, NULL, 'h' }, { "validate", 0, NULL, 'v' }, + { "reduce", 0, NULL, 'r' }, { "track", 0, NULL, 't'}, { NULL, 0, NULL, 0 } }; @@ -332,6 +339,9 @@ int main(int argc, char *argv[]) case 't': show_track = 1; break; + case 'r': + shrink = 1; + break; case 'v': validate = 1; break; @@ -345,7 +355,7 @@ int main(int argc, char *argv[]) } if (!show_slab && !show_alias && !show_parameters && !show_track - && !validate) + && !validate && !shrink) show_slab = 1; if (argc > optind) @@ -380,6 +390,9 @@ int main(int argc, char *argv[]) if (validate) slab_validate(de->d_name); else + if (shrink) + slab_shrink(de->d_name); + else slab(de->d_name); chdir(".."); break;