Em Thu, Nov 26, 2020 at 06:00:11PM +0100, Jiri Olsa escreveu:
> When adding new build id link we fail if the link is already
> there. Adding check for existing link and output debug message
> that the build id is already linked.

Thanks, applied.

- Arnaldo

 
> Signed-off-by: Jiri Olsa <jo...@kernel.org>
> ---
>  tools/perf/util/build-id.c | 19 ++++++++++++++++++-
>  1 file changed, 18 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/perf/util/build-id.c b/tools/perf/util/build-id.c
> index 2aacc8b29f7e..4a391f13f40d 100644
> --- a/tools/perf/util/build-id.c
> +++ b/tools/perf/util/build-id.c
> @@ -755,8 +755,25 @@ int build_id_cache__add_s(const char *sbuild_id, const 
> char *name,
>       tmp = dir_name + strlen(buildid_dir) - 5;
>       memcpy(tmp, "../..", 5);
>  
> -     if (symlink(tmp, linkname) == 0)
> +     if (symlink(tmp, linkname) == 0) {
>               err = 0;
> +     } else if (errno == EEXIST) {
> +             char path[PATH_MAX];
> +             ssize_t len;
> +
> +             len = readlink(linkname, path, sizeof(path) - 1);
> +             if (len <= 0) {
> +                     pr_err("Cant read link: %s\n", linkname);
> +                     goto out_free;
> +             }
> +             path[len] = '\0';
> +
> +             if (strcmp(tmp, path)) {
> +                     pr_debug("build <%s> already linked to %s\n",
> +                              sbuild_id, linkname);
> +             }
> +             err = 0;
> +     }
>  
>       /* Update SDT cache : error is just warned */
>       if (realname &&
> -- 
> 2.26.2
> 

-- 

- Arnaldo

Reply via email to