|
@@ -641,13 +641,26 @@ void unregister_tracer(struct tracer *type)
|
|
|
mutex_unlock(&trace_types_lock);
|
|
|
}
|
|
|
|
|
|
-void tracing_reset(struct trace_array *tr, int cpu)
|
|
|
+static void __tracing_reset(struct trace_array *tr, int cpu)
|
|
|
{
|
|
|
ftrace_disable_cpu();
|
|
|
ring_buffer_reset_cpu(tr->buffer, cpu);
|
|
|
ftrace_enable_cpu();
|
|
|
}
|
|
|
|
|
|
+void tracing_reset(struct trace_array *tr, int cpu)
|
|
|
+{
|
|
|
+ struct ring_buffer *buffer = tr->buffer;
|
|
|
+
|
|
|
+ ring_buffer_record_disable(buffer);
|
|
|
+
|
|
|
+ /* Make sure all commits have finished */
|
|
|
+ synchronize_sched();
|
|
|
+ __tracing_reset(tr, cpu);
|
|
|
+
|
|
|
+ ring_buffer_record_enable(buffer);
|
|
|
+}
|
|
|
+
|
|
|
void tracing_reset_online_cpus(struct trace_array *tr)
|
|
|
{
|
|
|
struct ring_buffer *buffer = tr->buffer;
|
|
@@ -661,7 +674,7 @@ void tracing_reset_online_cpus(struct trace_array *tr)
|
|
|
tr->time_start = ftrace_now(tr->cpu);
|
|
|
|
|
|
for_each_online_cpu(cpu)
|
|
|
- tracing_reset(tr, cpu);
|
|
|
+ __tracing_reset(tr, cpu);
|
|
|
|
|
|
ring_buffer_record_enable(buffer);
|
|
|
}
|