2015-07-14 15:03:07

by Josef Bacik

[permalink] [raw]
Subject: [PATCH] trace-cmd: fix report not working with instances

We unconditionally call trace_init_profile in read_data_info, even if we don't
have profile set. This causes trace-cmd report to fail out if you recorded
using instances because the profile stuff doesn't find the handle for the
instance when it does the record. So do 2 things

1) Only call trace_init_profile if we actually specified --profile.

2) Make sure to call trace_init_profile for all of the instance handles so that
we get all the info we want and don't bail out.

With this patch I can now do trace-cmd report on a trace.dat file that only had
events in instances. Thanks,

Signed-off-by: Josef Bacik <[email protected]>
---
trace-read.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/trace-read.c b/trace-read.c
index 103bc0c..50e7a5d 100644
--- a/trace-read.c
+++ b/trace-read.c
@@ -1066,7 +1066,6 @@ static void read_data_info(struct list_head *handle_list, enum output_type otype
last_hook->next = tracecmd_hooks(handles->handle);
else
hooks = tracecmd_hooks(handles->handle);
- trace_init_profile(handles->handle, hooks, global);

process_filters(handles);

@@ -1087,7 +1086,11 @@ static void read_data_info(struct list_head *handle_list, enum output_type otype
continue;
}
add_handle(new_handle, name);
+ if (profile)
+ trace_init_profile(new_handle, hooks, global);
}
+ } else if (profile) {
+ trace_init_profile(handles->handle, hooks, global);
}
}

--
2.1.0