| Subject | Re: [PATCH 3/9] ftrace: Fix shutdown to disable calls properly | From | Steven Rostedt <> | Date | Mon, 28 Nov 2011 14:18:48 -0500 |
| |
On Sun, 2011-11-27 at 19:04 +0100, Jiri Olsa wrote: > Each ftrace_startup call increases the call record's flag, > so we need allways to decrease it when shutting down the > ftrace_ops.
No, that's not how this works. I probably should comment this code better, because it caused me to reread it too ;)
> > Signed-off-by: Jiri Olsa <jolsa@redhat.com> > --- > kernel/trace/ftrace.c | 3 +-- > 1 files changed, 1 insertions(+), 2 deletions(-) > > diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c > index c6d0293..0ca0c0d 100644 > --- a/kernel/trace/ftrace.c > +++ b/kernel/trace/ftrace.c > @@ -1744,8 +1744,7 @@ static void ftrace_shutdown(struct ftrace_ops *ops, int command) > if (ops != &global_ops || !global_start_up) > ops->flags &= ~FTRACE_OPS_FL_ENABLED; > > - if (!ftrace_start_up) > - command |= FTRACE_DISABLE_CALLS; > + command |= FTRACE_DISABLE_CALLS;
FTRACE_DISABLE_CALLS will disable *all* functions for all tracers. If you are tracing with ftrace and perf, and one calls this with FTRACE_DISABLE_CALLS then both will no long be tracing anything.
When you call unregister_ftrace_function() it will disable the functions that you have enabled by the ops.
Nacked-by: Steven Rostedt <rostedt@goodmis.org.
-- Steve
> > if (saved_ftrace_func != ftrace_trace_function) { > saved_ftrace_func = ftrace_trace_function;
|