From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756017AbZCTI2x (ORCPT ); Fri, 20 Mar 2009 04:28:53 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753363AbZCTI2a (ORCPT ); Fri, 20 Mar 2009 04:28:30 -0400 Received: from mx3.mail.elte.hu ([157.181.1.138]:41634 "EHLO mx3.mail.elte.hu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755853AbZCTI22 (ORCPT ); Fri, 20 Mar 2009 04:28:28 -0400 Date: Fri, 20 Mar 2009 09:27:12 +0100 From: Ingo Molnar To: David Rientjes Cc: Andrew Morton , linux-kernel@vger.kernel.org Subject: Re: [patch] vmscan: print shrink_slab symbol name on negative shrinker objects Message-ID: <20090320082712.GB31137@elte.hu> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) X-ELTE-VirusStatus: clean X-ELTE-SpamScore: -1.5 X-ELTE-SpamLevel: X-ELTE-SpamCheck: no X-ELTE-SpamVersion: ELTE 2.0 X-ELTE-SpamCheck-Details: score=-1.5 required=5.9 tests=BAYES_00 autolearn=no SpamAssassin version=3.2.5 -1.5 BAYES_00 BODY: Bayesian spam probability is 0 to 1% [score: 0.0000] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org * David Rientjes 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 > --- > 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 > #include > #include > +#include > > #include > #include > @@ -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