]> git.hungrycats.org Git - linux/commitdiff
perf record: Fix sample cgroup & namespace tracking
authorNamhyung Kim <namhyung@kernel.org>
Sun, 18 Aug 2024 21:29:47 +0000 (14:29 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 19 Aug 2024 19:32:05 +0000 (16:32 -0300)
The recent change in 'struct perf_tool' constification broke the cgroup
and/or namespace tracking by resetting tool fields.  It should set the
values after perf_tool__init().

Fixes: cecb1cf154b301c6 ("perf record: Use perf_tool__init()")
Reviewed-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20240818212948.2873156-1-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-record.c

index 39367709fd99161937e471ca7fa3ff40086d81dc..adbaf80b398c1f4c27611368804d6cd8d38f3c95 100644 (file)
@@ -2374,13 +2374,8 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
        signal(SIGTERM, sig_handler);
        signal(SIGSEGV, sigsegv_handler);
 
-       if (rec->opts.record_namespaces)
-               tool->namespace_events = true;
-
        if (rec->opts.record_cgroup) {
-#ifdef HAVE_FILE_HANDLE
-               tool->cgroup_events = true;
-#else
+#ifndef HAVE_FILE_HANDLE
                pr_err("cgroup tracking is not supported\n");
                return -1;
 #endif
@@ -2406,6 +2401,8 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
        tool->mmap2             = build_id__process_mmap2;
        tool->itrace_start      = process_timestamp_boundary;
        tool->aux               = process_timestamp_boundary;
+       tool->namespace_events  = rec->opts.record_namespaces;
+       tool->cgroup_events     = rec->opts.record_cgroup;
        session = perf_session__new(data, tool);
        if (IS_ERR(session)) {
                pr_err("Perf session creation failed.\n");