tools/vm/slabinfo: Handle files in debugfs
PATCH RESEND 1/1 tools/vm/slabinfo: Handle files in debugfs
Commit 64dd68497be76 relocated and renamed the alloc_calls and free_calls files from /sys/kernel/slab/NAME/*_calls over to /sys/kernel/debug/slab/NAME/*_calls but didn't update the slabinfo tool with the new location.
This change will now have slabinfo look at the new location (and filenames) with a fallback to the prior files.
--- tools/vm/slabinfo.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-)
tools/vm/slabinfo.c +24 -2
@@ -233,6 +233,24 @@ static unsigned long read_slab_obj(struct slabinfo *s, const char *name)return l; } +static unsigned long read_debug_slab_obj (struct slabinfo *s,const char *name) +{ +char x[128 ]; +FILE *f; +size_t l; + +snprintf (x,128 ,"/sys/kernel/debug/slab/%s/%s" , s->name, name); + f =fopen (x,"r" ); +if (!f) { + buffer[0 ] =0 ; + l =0 ; + }else { + l =fread (buffer,1 ,sizeof (buffer), f); + buffer[l] =0 ; +fclose (f); + } +return l; +}/* * Put a size string together
@@ -409,14 +427,18 @@ static void show_tracking(struct slabinfo *s) {printf ("\n%s: Kernel object allocation\n" , s->name);printf ("-----------------------------------------------------------------------\n" ); -if (read_slab_obj (s,"alloc_calls" )) +if (read_debug_slab_obj (s,"alloc_traces" )) +printf ("%s" , buffer); +else if (read_slab_obj (s,"alloc_calls" ))printf ("%s" , buffer);else printf ("No Data\n" );printf ("\n%s: Kernel object freeing\n" , s->name);printf ("------------------------------------------------------------------------\n" ); -if (read_slab_obj (s,"free_calls" )) +if (read_debug_slab_obj (s,"free_traces" )) +printf ("%s" , buffer); +else if (read_slab_obj (s,"free_calls" ))printf ("%s" , buffer);else printf ("No Data\n" );
Signature · 1 line
2.34.1
Quoted 5 lines · Stéphane Graber
Commit
64dd68497be76relocated and renamed thealloc_callsandfree_callsfiles from/sys/kernel/slab/NAME/*_callsover to/sys/kernel/debug/slab/NAME/*_callsbut didn't update the slabinfo tool with the new location.
Quoted 7 lines
This change will now have slabinfo look at the new location (and filenames) with a fallback to the prior files.
Fixes 64dd68497be76 ("mm: slub: move sysfs slab alloc/free interfaces to debugfs")Signed-off-by Stéphane Graber <[email protected]>Tested-by Stéphane Graber <[email protected]>
Thanks, added to slab/for-5.20/debug
Quoted 54 lines
--- tools/vm/slabinfo.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-)tools/vm/slabinfo.c +24
-2@@ -233,6 +233,24 @@ static unsigned long read_slab_obj(struct slabinfo *s, const char *name)return l; } +static unsigned long read_debug_slab_obj (struct slabinfo *s,const char *name) +{ +char x[128 ]; +FILE *f; +size_t l; + +snprintf (x,128 ,"/sys/kernel/debug/slab/%s/%s" , s->name, name); + f =fopen (x,"r" ); +if (!f) { + buffer[0 ] =0 ; + l =0 ; + }else { + l =fread (buffer,1 ,sizeof (buffer), f); + buffer[l] =0 ; +fclose (f); + } +return l; +}/* * Put a size string together @@ -409,14 +427,18 @@ static void show_tracking(struct slabinfo *s) {printf ("\n%s: Kernel object allocation\n" , s->name);printf ("-----------------------------------------------------------------------\n" ); -if (read_slab_obj (s,"alloc_calls" )) +if (read_debug_slab_obj (s,"alloc_traces" )) +printf ("%s" , buffer); +else if (read_slab_obj (s,"alloc_calls" ))printf ("%s" , buffer);else printf ("No Data\n" );printf ("\n%s: Kernel object freeing\n" , s->name);printf ("------------------------------------------------------------------------\n" ); -if (read_slab_obj (s,"free_calls" )) +if (read_debug_slab_obj (s,"free_traces" )) +printf ("%s" , buffer); +else if (read_slab_obj (s,"free_calls" ))printf ("%s" , buffer);else printf ("No Data\n" );