All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masami Hiramatsu <mhiramat@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	<linux-kernel@vger.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 v5 04/15] perf probe: Add --cache option to cache the probe definitions
Date: Fri, 29 Apr 2016 08:06:18 +0900	[thread overview]
Message-ID: <20160429080618.47b205a74458a8ae04905bdb@kernel.org> (raw)
In-Reply-To: <20160428023218.GA15597@sejong.aot.lge.com>

On Thu, 28 Apr 2016 11:32:18 +0900
Namhyung Kim <namhyung@kernel.org> wrote:

> On Thu, Apr 28, 2016 at 03:37:42AM +0900, Masami Hiramatsu wrote:
> > From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
> > 
> > Add --cache option to cache the probe definitions. This
> > just saves the result of the dwarf analysis to probe cache.
> > 
> > Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
> > Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
> > ---
> >  Changes in v5:
> >   - Move probe_cache* definitions. (code cleanup)
> > 
> >  Changes in v4:
> >   - Remove cache saving failure message.
> > ---
> 
> [SNIP]
> > +/* For the kernel probe caches, pass target = NULL */
> > +static int probe_cache__open(struct probe_cache *pcache, const char *target)
> > +{
> > +	char cpath[PATH_MAX];
> > +	char sbuildid[SBUILD_ID_SIZE];
> > +	char *dir_name;
> > +	bool is_kallsyms = !target;
> > +	int ret, fd;
> > +
> > +	if (target)
> > +		ret = filename__sprintf_build_id(target, sbuildid);
> > +	else {
> > +		target = "[kernel.kallsyms]";
> > +		ret = sysfs__sprintf_build_id("/", sbuildid);
> > +	}
> > +	if (ret < 0) {
> > +		pr_debug("Failed to get build-id from %s.\n", target ?: "kernel");
> > +		return ret;
> > +	}
> > +
> > +	/* If we have no buildid cache, make it */
> > +	if (!build_id_cache__cached(sbuildid)) {
> > +		ret = build_id_cache__add_s(sbuildid, target,
> > +					    is_kallsyms, NULL);
> > +		if (ret < 0) {
> > +			pr_debug("Failed to add build-id cache: %s\n", target);
> > +			return ret;
> > +		}
> > +	}
> > +
> > +	dir_name = build_id_cache__dirname_from_path(sbuildid, target,
> > +						     is_kallsyms, false);
> > +	if (!dir_name)
> > +		return -ENOMEM;
> > +
> > +	snprintf(cpath, PATH_MAX, "%s/probes", dir_name);
> > +	fd = open(cpath, O_CREAT | O_RDWR | O_APPEND, 0644);
> > +	if (fd < 0)
> > +		pr_debug("Failed to open cache(%d): %s\n", fd, cpath);
> > +	free(dir_name);
> > +	pcache->fd = fd;
> > +
> > +	return fd;
> > +}
> 
> [SNIP]
> > +
> > +int probe_cache__commit(struct probe_cache *pcache)
> > +{
> > +	struct probe_cache_entry *entry;
> > +	int ret = 0;
> > +
> > +	/* TBD: if we do not update existing entries, skip it */
> > +	ret = lseek(pcache->fd, 0, SEEK_SET);
> > +	if (ret < 0)
> > +		goto out;
> > +
> > +	ret = ftruncate(pcache->fd, 0);
> > +	if (ret < 0)
> > +		goto out;
> 
> What is this doing?  Does it truncate old contents on write?  Opening
> with O_APPEND looks strange to me..

Ah, right. I forget the reason why :(, but I guess it maybe because just
changing the design while coding.
I'll remove O_APPEND flag then.

Thank you!

-- 
Masami Hiramatsu <mhiramat@kernel.org>

  reply	other threads:[~2016-04-28 23:06 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-27 18:37 [PATCH perf/core v5 00/15] perf-probe --cache and SDT support Masami Hiramatsu
2016-04-27 18:37 ` [PATCH perf/core v5 01/15] perf probe: Use strbuf for making strings Masami Hiramatsu
2016-05-01  7:38   ` [tip:perf/core] " tip-bot for Masami Hiramatsu
2016-04-27 18:37 ` [PATCH perf/core v5 02/15] perf-buildid-cache: Use path/to/bin/buildid/elf instead of path/to/bin/buildid Masami Hiramatsu
2016-04-27 21:12   ` Arnaldo Carvalho de Melo
2016-04-28  1:52     ` Masami Hiramatsu
2016-04-27 21:23   ` Arnaldo Carvalho de Melo
2016-04-28  1:51     ` Masami Hiramatsu
2016-04-28  1:22   ` Namhyung Kim
2016-04-28 22:50     ` Masami Hiramatsu
2016-04-27 18:37 ` [PATCH perf/core v5 03/15] perf-buildid-cache: Use lsdir for looking up buildid caches Masami Hiramatsu
2016-04-27 18:37 ` [PATCH perf/core v5 04/15] perf probe: Add --cache option to cache the probe definitions Masami Hiramatsu
2016-04-28  2:12   ` Namhyung Kim
2016-04-28 23:14     ` Masami Hiramatsu
2016-04-28  2:32   ` Namhyung Kim
2016-04-28 23:06     ` Masami Hiramatsu [this message]
2016-04-27 18:37 ` [PATCH perf/core v5 05/15] perf probe: Use cache entry if possible Masami Hiramatsu
2016-04-28  2:47   ` Namhyung Kim
2016-04-28 23:52     ` Masami Hiramatsu
2016-04-29 11:33       ` Namhyung Kim
2016-04-27 18:38 ` [PATCH perf/core v5 06/15] perf probe: Show all cached probes Masami Hiramatsu
2016-04-27 18:38 ` [PATCH perf/core v5 07/15] perf probe: Remove caches when --cache is given Masami Hiramatsu
2016-04-27 18:38 ` [PATCH perf/core v5 08/15] perf/sdt: ELF support for SDT Masami Hiramatsu
2016-04-27 18:38 ` [PATCH perf/core v5 09/15] perf probe: Add group name support Masami Hiramatsu
2016-04-27 18:38 ` [PATCH perf/core v5 10/15] perf buildid-cache: Scan and import user SDT events to probe cache Masami Hiramatsu
2016-04-27 20:32   ` Hemant Kumar
2016-04-27 18:38 ` [PATCH perf/core v5 11/15] perf probe: Accept %sdt and %cached event name Masami Hiramatsu
2016-04-27 20:50   ` Hemant Kumar
2016-04-28  5:26   ` Namhyung Kim
2016-04-29  0:13     ` Masami Hiramatsu
2016-04-27 18:38 ` [PATCH perf/core v5 12/15] perf-list: Show SDT and pre-cached events Masami Hiramatsu
2016-04-27 20:46   ` Hemant Kumar
2016-04-27 18:39 ` [PATCH perf/core v5 13/15] perf-list: Skip SDTs placed in invalid binaries Masami Hiramatsu
2016-04-27 18:39 ` [PATCH perf/core v5 14/15] perf probe: Allow wildcard for cached events Masami Hiramatsu
2016-04-27 18:42   ` Masami Hiramatsu
2016-04-27 19:15     ` [PATCH perf/core v5.1 " Masami Hiramatsu
2016-04-27 20:36       ` Hemant Kumar
2016-04-27 18:39 ` [PATCH perf/core v5 15/15] perf probe: Support @BUILDID or @FILE suffix for SDT events Masami Hiramatsu
2016-04-29 13:53 ` [PATCH perf/core v5 00/15] 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=20160429080618.47b205a74458a8ae04905bdb@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.