From ac5b23f1828f370c86ed4ac9f7e6ebd9763d5213 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Thu, 3 Sep 2009 19:13:05 -0400 Subject: [PATCH] --- yaml --- r: 158492 b: refs/heads/master c: e8165dbb03ed04d798163ee512074b9a9466a9c8 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/trace/trace.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index c70e8d453c2c..7dbff84301a7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 659372d3e42a3e17a2e042d38a8bcdb94bfbe797 +refs/heads/master: e8165dbb03ed04d798163ee512074b9a9466a9c8 diff --git a/trunk/kernel/trace/trace.c b/trunk/kernel/trace/trace.c index ef08328eb28d..6df9861fde6b 100644 --- a/trunk/kernel/trace/trace.c +++ b/trunk/kernel/trace/trace.c @@ -482,9 +482,20 @@ update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu) ret = ring_buffer_swap_cpu(max_tr.buffer, tr->buffer, cpu); + if (ret == -EBUSY) { + /* + * We failed to swap the buffer due to a commit taking + * place on this CPU. We fail to record, but we reset + * the max trace buffer (no one writes directly to it) + * and flag that it failed. + */ + trace_array_printk(&max_tr, _THIS_IP_, + "Failed to swap buffers due to commit in progress\n"); + } + ftrace_enable_cpu(); - WARN_ON_ONCE(ret && ret != -EAGAIN); + WARN_ON_ONCE(ret && ret != -EAGAIN && ret != -EBUSY); __update_max_tr(tr, tsk, cpu); __raw_spin_unlock(&ftrace_max_lock);