* [PATCH] tracing: fix missing function_graph events when we splice_read from trace_pipe
@ 2009-07-28 12:17 Lai Jiangshan
2009-07-28 15:34 ` Frederic Weisbecker
2009-08-04 12:12 ` [tip:tracing/urgent] tracing: Fix " tip-bot for Lai Jiangshan
0 siblings, 2 replies; 3+ messages in thread
From: Lai Jiangshan @ 2009-07-28 12:17 UTC (permalink / raw)
To: Frederic Weisbecker, Steven Rostedt, Ingo Molnar, LKML
About a half events are missing when we splice_read
from trace_pipe. They are consumed unexpected.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
---
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index e30e6b1..41996fc 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -3085,7 +3085,8 @@ tracing_fill_pipe_page(size_t rem, struct trace_iterator *iter)
break;
}
- trace_consume(iter);
+ if (ret != TRACE_TYPE_NO_CONSUME)
+ trace_consume(iter);
rem -= count;
if (!find_next_entry_inc(iter)) {
rem = 0;
@@ -4230,8 +4231,11 @@ static void __ftrace_dump(bool disable_tracing)
iter.pos = -1;
if (find_next_entry_inc(&iter) != NULL) {
- print_trace_line(&iter);
- trace_consume(&iter);
+ int ret;
+
+ ret = print_trace_line(&iter);
+ if (ret != TRACE_TYPE_NO_CONSUME)
+ trace_consume(&iter);
}
trace_printk_seq(&iter.seq);
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] tracing: fix missing function_graph events when we splice_read from trace_pipe
2009-07-28 12:17 [PATCH] tracing: fix missing function_graph events when we splice_read from trace_pipe Lai Jiangshan
@ 2009-07-28 15:34 ` Frederic Weisbecker
2009-08-04 12:12 ` [tip:tracing/urgent] tracing: Fix " tip-bot for Lai Jiangshan
1 sibling, 0 replies; 3+ messages in thread
From: Frederic Weisbecker @ 2009-07-28 15:34 UTC (permalink / raw)
To: Lai Jiangshan; +Cc: Steven Rostedt, Ingo Molnar, LKML
On Tue, Jul 28, 2009 at 08:17:22PM +0800, Lai Jiangshan wrote:
>
> About a half events are missing when we splice_read
> from trace_pipe. They are consumed unexpected.
>
> Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
> ---
Also queued for .31
Thanks!
> diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
> index e30e6b1..41996fc 100644
> --- a/kernel/trace/trace.c
> +++ b/kernel/trace/trace.c
> @@ -3085,7 +3085,8 @@ tracing_fill_pipe_page(size_t rem, struct trace_iterator *iter)
> break;
> }
>
> - trace_consume(iter);
> + if (ret != TRACE_TYPE_NO_CONSUME)
> + trace_consume(iter);
> rem -= count;
> if (!find_next_entry_inc(iter)) {
> rem = 0;
> @@ -4230,8 +4231,11 @@ static void __ftrace_dump(bool disable_tracing)
> iter.pos = -1;
>
> if (find_next_entry_inc(&iter) != NULL) {
> - print_trace_line(&iter);
> - trace_consume(&iter);
> + int ret;
> +
> + ret = print_trace_line(&iter);
> + if (ret != TRACE_TYPE_NO_CONSUME)
> + trace_consume(&iter);
> }
>
> trace_printk_seq(&iter.seq);
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* [tip:tracing/urgent] tracing: Fix missing function_graph events when we splice_read from trace_pipe
2009-07-28 12:17 [PATCH] tracing: fix missing function_graph events when we splice_read from trace_pipe Lai Jiangshan
2009-07-28 15:34 ` Frederic Weisbecker
@ 2009-08-04 12:12 ` tip-bot for Lai Jiangshan
1 sibling, 0 replies; 3+ messages in thread
From: tip-bot for Lai Jiangshan @ 2009-08-04 12:12 UTC (permalink / raw)
To: linux-tip-commits
Cc: linux-kernel, hpa, mingo, fweisbec, rostedt, tglx, laijs
Commit-ID: 74e7ff8c50b6b022e6ffaa736b16a4dc161d3eaf
Gitweb: http://git.kernel.org/tip/74e7ff8c50b6b022e6ffaa736b16a4dc161d3eaf
Author: Lai Jiangshan <laijs@cn.fujitsu.com>
AuthorDate: Tue, 28 Jul 2009 20:17:22 +0800
Committer: Frederic Weisbecker <fweisbec@gmail.com>
CommitDate: Tue, 28 Jul 2009 23:17:23 +0200
tracing: Fix missing function_graph events when we splice_read from trace_pipe
About a half events are missing when we splice_read
from trace_pipe. They are unexpectedly consumed because we ignore
the TRACE_TYPE_NO_CONSUME return value used by the function graph
tracer when it needs to consume the events by itself to walk on
the ring buffer.
The same problem appears with ftrace_dump()
Example of an output before this patch:
1) | ktime_get_real() {
1) 2.846 us | read_hpet();
1) 4.558 us | }
1) 6.195 us | }
After this patch:
0) | ktime_get_real() {
0) | getnstimeofday() {
0) 1.960 us | read_hpet();
0) 3.597 us | }
0) 5.196 us | }
The fix also applies on 2.6.30
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: stable@kernel.org
LKML-Reference: <4A6EEC52.90704@cn.fujitsu.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
---
kernel/trace/trace.c | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 8bc8d8a..da984ad 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -3085,7 +3085,8 @@ tracing_fill_pipe_page(size_t rem, struct trace_iterator *iter)
break;
}
- trace_consume(iter);
+ if (ret != TRACE_TYPE_NO_CONSUME)
+ trace_consume(iter);
rem -= count;
if (!find_next_entry_inc(iter)) {
rem = 0;
@@ -4233,8 +4234,11 @@ static void __ftrace_dump(bool disable_tracing)
iter.pos = -1;
if (find_next_entry_inc(&iter) != NULL) {
- print_trace_line(&iter);
- trace_consume(&iter);
+ int ret;
+
+ ret = print_trace_line(&iter);
+ if (ret != TRACE_TYPE_NO_CONSUME)
+ trace_consume(&iter);
}
trace_printk_seq(&iter.seq);
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-08-04 12:13 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-28 12:17 [PATCH] tracing: fix missing function_graph events when we splice_read from trace_pipe Lai Jiangshan
2009-07-28 15:34 ` Frederic Weisbecker
2009-08-04 12:12 ` [tip:tracing/urgent] tracing: Fix " tip-bot for Lai Jiangshan
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.