提交 af21c579 编写于 作者: J Jiri Olsa 提交者: Arnaldo Carvalho de Melo

perf build-id: Add check for existing link in buildid dir

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.
Signed-off-by: NJiri Olsa <jolsa@kernel.org>
Acked-by: NNamhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexey Budankov <alexey.budankov@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Song Liu <songliubraving@fb.com>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lore.kernel.org/lkml/20201126170026.2619053-11-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
上级 7ac22b08
......@@ -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 &&
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册