mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [patch] vmscan: print shrink_slab symbol name on negative shrinker objects
@ 2009-03-19 23:09 David Rientjes
  2009-03-19 23:33 ` Andrew Morton
  2009-03-20  8:27 ` Ingo Molnar
  0 siblings, 2 replies; 4+ messages in thread
From: David Rientjes @ 2009-03-19 23:09 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel

When a shrinker has a negative number of objects to delete, the symbol
name of the shrinker should be printed, not shrink_slab.

Signed-off-by: David Rientjes <rientjes@google.com>
---
 mm/vmscan.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -40,6 +40,7 @@
 #include <linux/memcontrol.h>
 #include <linux/delayacct.h>
 #include <linux/sysctl.h>
+#include <linux/kallsyms.h>
 
 #include <asm/tlbflush.h>
 #include <asm/div64.h>
@@ -214,8 +215,12 @@ unsigned long shrink_slab(unsigned long scanned, gfp_t gfp_mask,
 		do_div(delta, lru_pages + 1);
 		shrinker->nr += delta;
 		if (shrinker->nr < 0) {
-			printk(KERN_ERR "%s: nr=%ld\n",
-					__func__, shrinker->nr);
+			char symname[KSYM_NAME_LEN];
+
+			if (lookup_symbol_name((unsigned long)shrinker->shrink,
+					       symname) > 0)
+				printk(KERN_ERR "shrink_slab: %s nr=%ld\n",
+				       symname, shrinker->nr);
 			shrinker->nr = max_pass;
 		}
 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [patch] vmscan: print shrink_slab symbol name on negative shrinker objects
  2009-03-19 23:09 [patch] vmscan: print shrink_slab symbol name on negative shrinker objects David Rientjes
@ 2009-03-19 23:33 ` Andrew Morton
  2009-03-20 10:15   ` David Rientjes
  2009-03-20  8:27 ` Ingo Molnar
  1 sibling, 1 reply; 4+ messages in thread
From: Andrew Morton @ 2009-03-19 23:33 UTC (permalink / raw)
  To: David Rientjes; +Cc: linux-kernel

On Thu, 19 Mar 2009 16:09:33 -0700 (PDT) David Rientjes <rientjes@google.com> wrote:

> When a shrinker has a negative number of objects to delete, the symbol
> name of the shrinker should be printed, not shrink_slab.
> 
> Signed-off-by: David Rientjes <rientjes@google.com>
> ---
>  mm/vmscan.c |    9 +++++++--
>  1 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/mm/vmscan.c b/mm/vmscan.c
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -40,6 +40,7 @@
>  #include <linux/memcontrol.h>
>  #include <linux/delayacct.h>
>  #include <linux/sysctl.h>
> +#include <linux/kallsyms.h>
>  
>  #include <asm/tlbflush.h>
>  #include <asm/div64.h>
> @@ -214,8 +215,12 @@ unsigned long shrink_slab(unsigned long scanned, gfp_t gfp_mask,
>  		do_div(delta, lru_pages + 1);
>  		shrinker->nr += delta;
>  		if (shrinker->nr < 0) {
> -			printk(KERN_ERR "%s: nr=%ld\n",
> -					__func__, shrinker->nr);
> +			char symname[KSYM_NAME_LEN];
> +
> +			if (lookup_symbol_name((unsigned long)shrinker->shrink,
> +					       symname) > 0)
> +				printk(KERN_ERR "shrink_slab: %s nr=%ld\n",
> +				       symname, shrinker->nr);
>  			shrinker->nr = max_pass;
>  		}

Can we use the new printk("%pF", ...) here?

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [patch] vmscan: print shrink_slab symbol name on negative shrinker objects
  2009-03-19 23:09 [patch] vmscan: print shrink_slab symbol name on negative shrinker objects David Rientjes
  2009-03-19 23:33 ` Andrew Morton
@ 2009-03-20  8:27 ` Ingo Molnar
  1 sibling, 0 replies; 4+ messages in thread
From: Ingo Molnar @ 2009-03-20  8:27 UTC (permalink / raw)
  To: David Rientjes; +Cc: Andrew Morton, linux-kernel


* David Rientjes <rientjes@google.com> wrote:

> When a shrinker has a negative number of objects to delete, the symbol
> name of the shrinker should be printed, not shrink_slab.
> 
> Signed-off-by: David Rientjes <rientjes@google.com>
> ---
>  mm/vmscan.c |    9 +++++++--
>  1 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/mm/vmscan.c b/mm/vmscan.c
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -40,6 +40,7 @@
>  #include <linux/memcontrol.h>
>  #include <linux/delayacct.h>
>  #include <linux/sysctl.h>
> +#include <linux/kallsyms.h>
>  
>  #include <asm/tlbflush.h>
>  #include <asm/div64.h>
> @@ -214,8 +215,12 @@ unsigned long shrink_slab(unsigned long scanned, gfp_t gfp_mask,
>  		do_div(delta, lru_pages + 1);
>  		shrinker->nr += delta;
>  		if (shrinker->nr < 0) {
> -			printk(KERN_ERR "%s: nr=%ld\n",
> -					__func__, shrinker->nr);
> +			char symname[KSYM_NAME_LEN];
> +
> +			if (lookup_symbol_name((unsigned long)shrinker->shrink,
> +					       symname) > 0)
> +				printk(KERN_ERR "shrink_slab: %s nr=%ld\n",
> +				       symname, shrinker->nr);
>  			shrinker->nr = max_pass;

Please dont open-code lookup_symbol_name() for function pointers - 
we have %pF for such purposes.

Btw., probably all existing print_symbol() uses in mm/*.c should be 
converted to %pF:

mm/memory.c:		print_symbol(KERN_ALERT "vma->vm_ops->fault: %s\n",
mm/memory.c:		print_symbol(KERN_ALERT "vma->vm_file->f_op->mmap: %s\n",
mm/slab.c:		print_symbol("(%s)",
mm/slub.c:			len += sprint_symbol(buf + len, (unsigned long)l->addr);
mm/slub.c:		int n = sprint_symbol(buf, (unsigned long)s->ctor);
mm/vmalloc.c:		sprint_symbol(buff, (unsigned long)v->caller);

[ Except the second slub.c one which should be %pS ]

	Ingo

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [patch] vmscan: print shrink_slab symbol name on negative shrinker objects
  2009-03-19 23:33 ` Andrew Morton
@ 2009-03-20 10:15   ` David Rientjes
  0 siblings, 0 replies; 4+ messages in thread
From: David Rientjes @ 2009-03-20 10:15 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Ingo Molnar, linux-kernel

On Thu, 19 Mar 2009, Andrew Morton wrote:

> > diff --git a/mm/vmscan.c b/mm/vmscan.c
> > --- a/mm/vmscan.c
> > +++ b/mm/vmscan.c
> > @@ -40,6 +40,7 @@
> >  #include <linux/memcontrol.h>
> >  #include <linux/delayacct.h>
> >  #include <linux/sysctl.h>
> > +#include <linux/kallsyms.h>
> >  
> >  #include <asm/tlbflush.h>
> >  #include <asm/div64.h>
> > @@ -214,8 +215,12 @@ unsigned long shrink_slab(unsigned long scanned, gfp_t gfp_mask,
> >  		do_div(delta, lru_pages + 1);
> >  		shrinker->nr += delta;
> >  		if (shrinker->nr < 0) {
> > -			printk(KERN_ERR "%s: nr=%ld\n",
> > -					__func__, shrinker->nr);
> > +			char symname[KSYM_NAME_LEN];
> > +
> > +			if (lookup_symbol_name((unsigned long)shrinker->shrink,
> > +					       symname) > 0)
> > +				printk(KERN_ERR "shrink_slab: %s nr=%ld\n",
> > +				       symname, shrinker->nr);
> >  			shrinker->nr = max_pass;
> >  		}
> 
> Can we use the new printk("%pF", ...) here?
> 

Cool, that's super convenient.


vmscan: print shrink_slab symbol name on negative shrinker objects

When a shrinker has a negative number of objects to delete, the symbol
name of the shrinker should be printed, not shrink_slab.  This also makes
the error message slightly more informative.

Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: David Rientjes <rientjes@google.com>
---
 mm/vmscan.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -214,8 +214,9 @@ unsigned long shrink_slab(unsigned long scanned, gfp_t gfp_mask,
 		do_div(delta, lru_pages + 1);
 		shrinker->nr += delta;
 		if (shrinker->nr < 0) {
-			printk(KERN_ERR "%s: nr=%ld\n",
-					__func__, shrinker->nr);
+			printk(KERN_ERR "shrink_slab: %pF negative objects to "
+			       "delete nr=%ld\n",
+			       shrinker->shrink, shrinker->nr);
 			shrinker->nr = max_pass;
 		}
 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-03-20 10:16 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-19 23:09 [patch] vmscan: print shrink_slab symbol name on negative shrinker objects David Rientjes
2009-03-19 23:33 ` Andrew Morton
2009-03-20 10:15   ` David Rientjes
2009-03-20  8:27 ` Ingo Molnar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®