Message ID | 20211111150933.86678-1-tz.stoyanov@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Trace file version 7 - sections | expand |
On Thu, 11 Nov 2021 17:09:33 +0200 "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com> wrote: > In trace file version 7, the CPU trace metadata is saved in a trace > option. As this metadata has file offsets, which depend on the CPU trace > data, the option must be written in the file after the CPU trace data. > > Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> > --- > tracecmd/trace-record.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/tracecmd/trace-record.c b/tracecmd/trace-record.c > index 757dab0f..32270e20 100644 > --- a/tracecmd/trace-record.c > +++ b/tracecmd/trace-record.c > @@ -4449,6 +4449,9 @@ static void write_guest_file(struct buffer_instance *instance) > > if (tracecmd_write_cpu_data(handle, cpu_count, temp_files, NULL) < 0) > die("failed to write CPU data"); > + if (tracecmd_get_out_file_version(handle) >= FILE_VERSION_SECTIONS) Can't this be detected on close? That is, if the handle has pending options to write out, and the handle has sections, can't the tracecmd_output_close() write it out then? Why make this something the user must worry about? -- Steve > + tracecmd_write_options(handle); > + > tracecmd_output_close(handle); > > for (i = 0; i < cpu_count; i++) > @@ -4597,7 +4600,8 @@ static void record_data(struct common_record_context *ctx) > append_buffer(handle, instance, temp_files); > } > } > - > + if (tracecmd_get_out_file_version(handle) >= FILE_VERSION_SECTIONS) > + tracecmd_write_options(handle); > free(temp_files); > } > if (!handle)
diff --git a/tracecmd/trace-record.c b/tracecmd/trace-record.c index 757dab0f..32270e20 100644 --- a/tracecmd/trace-record.c +++ b/tracecmd/trace-record.c @@ -4449,6 +4449,9 @@ static void write_guest_file(struct buffer_instance *instance) if (tracecmd_write_cpu_data(handle, cpu_count, temp_files, NULL) < 0) die("failed to write CPU data"); + if (tracecmd_get_out_file_version(handle) >= FILE_VERSION_SECTIONS) + tracecmd_write_options(handle); + tracecmd_output_close(handle); for (i = 0; i < cpu_count; i++) @@ -4597,7 +4600,8 @@ static void record_data(struct common_record_context *ctx) append_buffer(handle, instance, temp_files); } } - + if (tracecmd_get_out_file_version(handle) >= FILE_VERSION_SECTIONS) + tracecmd_write_options(handle); free(temp_files); } if (!handle)
In trace file version 7, the CPU trace metadata is saved in a trace option. As this metadata has file offsets, which depend on the CPU trace data, the option must be written in the file after the CPU trace data. Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> --- tracecmd/trace-record.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)