All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masami Hiramatsu <mhiramat@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: linux-kernel@vger.kernel.org, Namhyung Kim <namhyung@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Hemant Kumar <hemant@linux.vnet.ibm.com>,
	Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
Subject: Re: [PATCH perf/core v4 03/19] perf buildid-cache: Fall back to the old style build-id cache
Date: Tue, 26 Apr 2016 23:42:25 +0900	[thread overview]
Message-ID: <20160426234225.204ed49b76d02442fc57ec83@kernel.org> (raw)
In-Reply-To: <20160426134749.GB20998@kernel.org>

On Tue, 26 Apr 2016 10:47:49 -0300
Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Em Tue, Apr 26, 2016 at 06:02:33PM +0900, Masami Hiramatsu escreveu:
> > Fall back to the old style build-id cache
> > (~/.debug/<path-to-bin>/<build-id>) if possible.
> > Because there is old build-id cache under ~/.debug, perf
> > has to check if the old entry is there instead of returning
> > an error. Or, user have to remove ~/.debug completely.
> 
> So, from the description this seems to address the issues I mentioned in
> the previous patch.

yes :)

> 
> Probably it is a good idea not to introduce the problem in the first
> place? I.e. combine this and the previous patch, so that we don't have
> this bisection break?

Yeah, I just try to keep original clean for review.
I'll combine this with 02/19.

Thanks!

> 
> - Arnaldo
>  
> > This patch introduces fallback code to try using old-style
> > buildid caches. To update the cached entry, you just need to
> > add a cache. It automatically removes old cache entry and
> > make a new one in new style
> > (~/.debug/<path-to-bin>/<build-id>/[elf|vdso|kallsyms]).
> > 
> > IOW, without this patch, "perf buildid-cache --add" always
> > gets errors when adding existing binaries.
> >   ----
> >   # perf buildid-cache -a /usr/lib64/libc-2.20.so,/usr/bin/gcc
> >   Couldn't add /usr/bin/gcc: Not a directory
> >   Couldn't add /usr/lib64/libc-2.20.so: Not a directory
> >   ----
> > Moreover, --update option removes only symlink, thus the
> > build-id cache is corrupted.
> > 
> > This fixes above issues.
> > 
> > Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
> > ---
> >  tools/perf/util/build-id.c |   17 ++++++++++++++++-
> >  tools/perf/util/symbol.c   |   13 +++++++++----
> >  2 files changed, 25 insertions(+), 5 deletions(-)
> > 
> > diff --git a/tools/perf/util/build-id.c b/tools/perf/util/build-id.c
> > index 46a8bcc..b035483 100644
> > --- a/tools/perf/util/build-id.c
> > +++ b/tools/perf/util/build-id.c
> > @@ -155,6 +155,12 @@ static char *build_id_cache__linkname(const char *sbuild_id, char *bf,
> >  	return bf;
> >  }
> >  
> > +static bool __is_regular_file(const char *pathname)
> > +{
> > +	struct stat sb;
> > +	return stat(pathname, &sb) == 0 && S_ISREG(sb.st_mode);
> > +}
> > +
> >  static const char *build_id_cache__basename(bool is_kallsyms, bool is_vdso)
> >  {
> >  	return is_kallsyms ? "kallsyms" : (is_vdso ? "vdso" : "elf");
> > @@ -177,7 +183,11 @@ char *dso__build_id_filename(const struct dso *dso, char *bf, size_t size)
> >  	if (!linkname)
> >  		return NULL;
> >  
> > -	ret = asnprintf(&bf, size, "%s/%s", linkname,
> > +	/* Check if old style build_id cache */
> > +	if (__is_regular_file(linkname))
> > +		ret = asnprintf(&bf, size, "%s", linkname);
> > +	else
> > +		ret = asnprintf(&bf, size, "%s/%s", linkname,
> >  			 build_id_cache__basename(is_kallsyms, is_vdso));
> >  	if (ret < 0 || (!alloc && size < (unsigned int)ret))
> >  		bf = NULL;
> > @@ -445,6 +455,11 @@ int build_id_cache__add_s(const char *sbuild_id, const char *name,
> >  	if (!dir_name)
> >  		goto out_free;
> >  
> > +	/* Remove old style build-id cache */
> > +	if (__is_regular_file(dir_name))
> > +		if (unlink(dir_name))
> > +			goto out_free;
> > +
> >  	if (mkdir_p(dir_name, 0755))
> >  		goto out_free;
> >  
> > diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
> > index c57cb47..9463c7d 100644
> > --- a/tools/perf/util/symbol.c
> > +++ b/tools/perf/util/symbol.c
> > @@ -1687,11 +1687,16 @@ static char *dso__find_kallsyms(struct dso *dso, struct map *map)
> >  
> >  	scnprintf(path, sizeof(path), "%s/[kernel.kallsyms]/%s/kallsyms",
> >  		  buildid_dir, sbuild_id);
> > -
> > +	/* Try old style kallsyms cache */
> >  	if (access(path, F_OK)) {
> > -		pr_err("No kallsyms or vmlinux with build-id %s was found\n",
> > -		       sbuild_id);
> > -		return NULL;
> > +		scnprintf(path, sizeof(path), "%s/[kernel.kallsyms]/%s",
> > +			  buildid_dir, sbuild_id);
> > +
> > +		if (access(path, F_OK)) {
> > +			pr_err("No kallsyms or vmlinux with build-id %s was found\n",
> > +			       sbuild_id);
> > +			return NULL;
> > +		}
> >  	}
> >  
> >  	return strdup(path);


-- 
Masami Hiramatsu <mhiramat@kernel.org>

  reply	other threads:[~2016-04-26 14:42 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-26  9:02 [PATCH perf/core v4 00/19] perf-probe --cache and SDT support Masami Hiramatsu
2016-04-26  9:02 ` [PATCH perf/core v4 01/19] perf probe: Use strbuf for making strings Masami Hiramatsu
2016-04-26 13:36   ` Arnaldo Carvalho de Melo
2016-04-26 14:40     ` Masami Hiramatsu
2016-04-26 14:59       ` Arnaldo Carvalho de Melo
2016-04-27 18:44         ` Masami Hiramatsu
2016-04-26  9:02 ` [PATCH perf/core v4 02/19] perf-buildid-cache: Use path/to/bin/buildid/elf instead of path/to/bin/buildid Masami Hiramatsu
2016-04-26 13:45   ` Arnaldo Carvalho de Melo
2016-04-26 14:47     ` Masami Hiramatsu
2016-04-26  9:02 ` [PATCH perf/core v4 03/19] perf buildid-cache: Fall back to the old style build-id cache Masami Hiramatsu
2016-04-26 13:47   ` Arnaldo Carvalho de Melo
2016-04-26 14:42     ` Masami Hiramatsu [this message]
2016-04-26  9:02 ` [PATCH perf/core v4 04/19] perf: Add lsdir to read a directory Masami Hiramatsu
2016-04-26 13:40   ` Arnaldo Carvalho de Melo
2016-04-26 14:07     ` Arnaldo Carvalho de Melo
2016-04-26 14:52       ` Masami Hiramatsu
2016-04-26 15:00         ` Arnaldo Carvalho de Melo
2016-04-27 15:35   ` [tip:perf/core] perf tools: Add lsdir() helper " tip-bot for Masami Hiramatsu
2016-04-26  9:02 ` [PATCH perf/core v4 05/19] perf-buildid-cache: Use lsdir for looking up buildid caches Masami Hiramatsu
2016-04-26  9:03 ` [PATCH perf/core v4 06/19] perf-probe: Let probe_file__add_event return 0 if succeeded Masami Hiramatsu
2016-04-26 13:49   ` Arnaldo Carvalho de Melo
2016-04-27 15:35   ` [tip:perf/core] perf probe: " tip-bot for Masami Hiramatsu
2016-04-26  9:03 ` [PATCH perf/core v4 07/19] perf probe: Add --cache option to cache the probe definitions Masami Hiramatsu
2016-04-26  9:03 ` [PATCH perf/core v4 08/19] perf probe: Use cache entry if possible Masami Hiramatsu
2016-04-26  9:03 ` [PATCH perf/core v4 09/19] perf probe: Show all cached probes Masami Hiramatsu
2016-04-26  9:03 ` [PATCH perf/core v4 10/19] perf probe: Remove caches when --cache is given Masami Hiramatsu
2016-04-26  9:03 ` [PATCH perf/core v4 11/19] perf/sdt: ELF support for SDT Masami Hiramatsu
2016-04-26  9:04 ` [PATCH perf/core v4 12/19] perf probe: Add group name support Masami Hiramatsu
2016-04-26  9:04 ` [PATCH perf/core v4 13/19] perf-probe: Set default kprobe group name if it is not given Masami Hiramatsu
2016-04-26 13:50   ` Arnaldo Carvalho de Melo
2016-04-27 15:35   ` [tip:perf/core] perf probe: " tip-bot for Masami Hiramatsu
2016-04-26  9:04 ` [PATCH perf/core v4 14/19] perf buildid-cache: Scan and import user SDT events to probe cache Masami Hiramatsu
2016-04-27 15:19   ` Hemant Kumar
2016-04-27 15:28     ` Arnaldo Carvalho de Melo
2016-04-27 19:36       ` Masami Hiramatsu
2016-04-27 20:23         ` Hemant Kumar
2016-04-27 20:16       ` Hemant Kumar
2016-04-26  9:04 ` [PATCH perf/core v4 15/19] perf probe: Accept %sdt and %cached event name Masami Hiramatsu
2016-04-26  9:04 ` [PATCH perf/core v4 16/19] perf-list: Show SDT and pre-cached events Masami Hiramatsu
2016-04-26  9:04 ` [PATCH perf/core v4 17/19] perf-list: Skip SDTs placed in invalid binaries Masami Hiramatsu
2016-04-26  9:04 ` [PATCH perf/core v4 18/19] perf probe: Allow wildcard for cached events Masami Hiramatsu
2016-04-27 15:34   ` Hemant Kumar
2016-04-27 18:51     ` Masami Hiramatsu
2016-04-26  9:05 ` [PATCH perf/core v4 19/19] perf probe: Support @BUILDID or @FILE suffix for SDT events Masami Hiramatsu
2016-04-27 15:36 ` [PATCH perf/core v4 00/19] perf-probe --cache and SDT support Hemant Kumar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160426234225.204ed49b76d02442fc57ec83@kernel.org \
    --to=mhiramat@kernel.org \
    --cc=acme@kernel.org \
    --cc=ananth@linux.vnet.ibm.com \
    --cc=hemant@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.