tracing: Fix traceon trigger condition to actually turn tracing on
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>
Wed, 26 Mar 2014 03:39:41 +0000 (23:39 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Wed, 26 Mar 2014 03:39:41 +0000 (23:39 -0400)
commit2c4a33aba5f9ea3a28f2e40351f078d95f00786b
tree657da8f44eaa6331bd8bfa4789f10b152bc8104c
parent87291347c49dc40aa339f587b209618201c2e527
tracing: Fix traceon trigger condition to actually turn tracing on

While working on my tutorial for 2014 Linux Collaboration Summit
I found that the traceon trigger did not work when conditions were
used. The other triggers worked fine though. Looking into it, it
is because of the way the triggers use the ring buffer to store
the fields it will use for the condition. But if tracing is off, nothing
is stored in the buffer, and the tracepoint exits before calling the
trigger to test the condition. This is fine for all the triggers that
only work when tracing is on, but for traceon trigger that is to
work when tracing is off, nothing happens.

The fix is simple, just use a temp ring buffer to record the event
if tracing is off and the event has a trace event conditional trigger
enabled. The rest of the tracepoint code will work just fine, but
the tracepoint wont be recorded in the other buffers.

Cc: Tom Zanussi <tom.zanussi@linux.intel.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
kernel/trace/trace.c