diff mbox series

[2/2] trace-cmd: Write saved cmdlines in the trace file at the end of the trace.

Message ID 20200918071603.597501-2-tz.stoyanov@gmail.com
State Accepted
Commit 1eea02a4bef10507d157489a1ee97f273db7b319
Headers show
Series [1/2] trace-cmd: Change tracefs.h include path | expand

Commit Message

Tzvetomir Stoyanov Sept. 18, 2020, 7:16 a.m. UTC
The "tracing/saved_cmdlines" files contains the PID to command name
mapping. This mapping is used when displaying the trace events. The file
is updatated during the trace, but is saved in the trace.dat file just
before the trace starts. This could lead to missed mapping entries,
appeared during the trace.
The saving of "tracing/saved_cmdlines" into trace.dat file is moved
after the trace completes.

Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com>
---
 lib/trace-cmd/trace-output.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)
diff mbox series

Patch

diff --git a/lib/trace-cmd/trace-output.c b/lib/trace-cmd/trace-output.c
index 4a9a857d..cd7dcec8 100644
--- a/lib/trace-cmd/trace-output.c
+++ b/lib/trace-cmd/trace-output.c
@@ -917,12 +917,6 @@  create_file_fd(int fd, struct tracecmd_input *ihandle,
 	if (read_ftrace_printk(handle))
 		goto out_free;
 
-	/*
-	 * Save the command lines;
-	 */
-	if (save_tracing_file_data(handle, "saved_cmdlines") < 0)
-		goto out_free;
-
 	return handle;
 
  out_free:
@@ -1215,6 +1209,11 @@  struct tracecmd_output *tracecmd_create_file_latency(const char *output_file, in
 	if (!handle)
 		return NULL;
 
+	/*
+	 * Save the command lines;
+	 */
+	if (save_tracing_file_data(handle, "saved_cmdlines") < 0)
+		goto out_free;
 
 	if (tracecmd_write_cpus(handle, cpus) < 0)
 		goto out_free;
@@ -1351,6 +1350,13 @@  int tracecmd_append_cpu_data(struct tracecmd_output *handle,
 {
 	int ret;
 
+	/*
+	 * Save the command lines;
+	 */
+	ret = save_tracing_file_data(handle, "saved_cmdlines");
+	if (ret)
+		return ret;
+
 	ret = tracecmd_write_cpus(handle, cpus);
 	if (ret)
 		return ret;