From: Namhyung Kim <namhyung@kernel.org>
To: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Adrian Hunter <adrian.hunter@intel.com>,
linux-kernel@vger.kernel.org, Ingo Molnar <mingo@redhat.com>,
Paul Mackerras <paulus@samba.org>, Jiri Olsa <jolsa@kernel.org>,
Borislav Petkov <bp@suse.de>,
Hemant Kumar <hemant@linux.vnet.ibm.com>
Subject: Re: [perf/core PATCH v4 2/2] perf buildid-cache: Add --purge FILE to remove all caches of FILE
Date: Sat, 21 Feb 2015 22:56:45 +0900 [thread overview]
Message-ID: <20150221135645.GA10557@danjae> (raw)
In-Reply-To: <20150220094150.4942.13002.stgit@localhost.localdomain>
Hi Masami,
On Fri, Feb 20, 2015 at 06:41:50PM +0900, Masami Hiramatsu wrote:
> Add --purge FILE to remove all caches of FILE.
> Since the current --remove FILE removes a cache which has
> same build-id of given FILE. Since the command takes a
> FILE path, it can confuse user who tries to remove cache
> about FILE path.
>
> -----
> # ./perf buildid-cache -v --add ./perf
> Adding 133b7b5486d987a5ab5c3ebf4ea14941f45d4d4f ./perf: Ok
> # (update the ./perf binary)
> # ./perf buildid-cache -v --remove ./perf
> Removing 305bbd1be68f66eca7e2d78db294653031edfa79 ./perf: FAIL
> ./perf wasn't in the cache
> -----
> Actually, the --remove's FAIL is not shown, it just silently fails.
>
> So, this patch adds --purge FILE action for such usecase.
> perf buildid-cache --purge FILE removes all caches which
> has same FILE path.
> In other words, it removes all caches including old binaries.
>
> -----
> # ./perf buildid-cache -v --add ./perf
> Adding 133b7b5486d987a5ab5c3ebf4ea14941f45d4d4f ./perf: Ok
> # (update the ./perf binary)
> # ./perf buildid-cache -v --purge ./perf
> Removing 133b7b5486d987a5ab5c3ebf4ea14941f45d4d4f ./perf: Ok
> -----
>
> BTW, if you want to purge all the caches, remove ~/.debug/* .
>
> Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
I have a nitpick below - other than that both patches look good.
Acked-by: Namhyung Kim <namhyung@kernel.org>
Thanks,
Namhyung
> ---
> tools/perf/Documentation/perf-buildid-cache.txt | 13 ++-
> tools/perf/builtin-buildid-cache.c | 44 ++++++++++++
> tools/perf/util/build-id.c | 86 ++++++++++++++++++-----
> tools/perf/util/build-id.h | 1
> 4 files changed, 123 insertions(+), 21 deletions(-)
>
> diff --git a/tools/perf/Documentation/perf-buildid-cache.txt b/tools/perf/Documentation/perf-buildid-cache.txt
> index cec6b57..dd07b55 100644
> --- a/tools/perf/Documentation/perf-buildid-cache.txt
> +++ b/tools/perf/Documentation/perf-buildid-cache.txt
> @@ -12,9 +12,9 @@ SYNOPSIS
>
> DESCRIPTION
> -----------
> -This command manages the build-id cache. It can add and remove files to/from
> -the cache. In the future it should as well purge older entries, set upper
> -limits for the space used by the cache, etc.
> +This command manages the build-id cache. It can add, remove, update and purge
> +files to/from the cache. In the future it should as well set upper limits for
> +the space used by the cache, etc.
>
> OPTIONS
> -------
> @@ -36,7 +36,12 @@ OPTIONS
> actually made.
> -r::
> --remove=::
> - Remove specified file from the cache.
> + Remove a cached binary which has same build-id of specified file
> + from the cache.
> +-p::
> +--purge=::
> + Purge all cached binaries including older caches which have specified
> + path from the cache.
> -M::
> --missing=::
> List missing build ids in the cache for the specified file.
> diff --git a/tools/perf/builtin-buildid-cache.c b/tools/perf/builtin-buildid-cache.c
> index e7568f5..37182bb 100644
> --- a/tools/perf/builtin-buildid-cache.c
> +++ b/tools/perf/builtin-buildid-cache.c
> @@ -223,6 +223,29 @@ static int build_id_cache__remove_file(const char *filename)
> return err;
> }
>
> +static int build_id_cache__purge_path(const char *pathname)
> +{
> + struct strlist *list;
> + struct str_node *pos;
> + int err;
> +
> + list = build_id_cache__list_build_ids(pathname);
> + if (!list)
> + return 0;
> +
> + strlist__for_each(pos, list) {
> + err = build_id_cache__remove_s(pos->s);
> + if (verbose)
> + pr_info("Removing %s %s: %s\n", pos->s, pathname,
> + err ? "FAIL" : "Ok");
You can simply use pr_debug() here. :)
Thanks,
Namhyung
> + if (err)
> + break;
> + }
> + strlist__delete(list);
> +
> + return err;
> +}
> +
next prev parent reply other threads:[~2015-02-21 13:57 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-20 9:41 [perf/core PATCH v4 0/2] perf-buildid-cache: Enhance --update and add --purge Masami Hiramatsu
2015-02-20 9:41 ` [perf/core PATCH v4 1/2] perf buildid-cache: Add new buildid cache if update target is not cached Masami Hiramatsu
2015-02-20 9:41 ` [perf/core PATCH v4 2/2] perf buildid-cache: Add --purge FILE to remove all caches of FILE Masami Hiramatsu
2015-02-20 19:07 ` Hemant Kumar
2015-02-23 6:07 ` Masami Hiramatsu
2015-02-21 13:56 ` Namhyung Kim [this message]
2015-02-23 6:06 ` Masami Hiramatsu
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=20150221135645.GA10557@danjae \
--to=namhyung@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=bp@suse.de \
--cc=hemant@linux.vnet.ibm.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@redhat.com \
--cc=paulus@samba.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.