tracing: Have large events show up as '[LINE TOO BIG]' instead of nothing
[ Upstream commit b55b0a0d7c4aa2dac3579aa7e6802d1f57445096 ] If a large event was added to the ring buffer that is larger than what the trace_seq can handle, it just drops the output: ~# cat /sys/kernel/tracing/trace # tracer: nop # # entries-in-buffer/entries-written: 2/2 #P:8 # # _-----=> irqs-off/BH-disabled # / _----=> need-resched # | / _---=> hardirq/softirq # || / _--=> preempt-depth # ||| / _-=> migrate-disable # |||| / delay # TASK-PID CPU# ||||| TIMESTAMP FUNCTION # | | | ||||| | | <...>-859 [001] ..... 141.118951: tracing_mark_write <...>-859 [001] ..... 141.148201: tracing_mark_write: 78901234 Instead, catch this case and add some context: ~# cat /sys/kernel/tracing/trace # tracer: nop # # entries-in-buffer/entries-written: 2/2 #P:8 # # _-----=> irqs-off/BH-disabled # / _----=> need-resched # | / _---=> hardirq/softirq # || / _--=> preempt-depth # ||| / _-=> migrate-disable # |||| / delay # TASK-PID CPU# ||||| TIMESTAMP FUNCTION # | | | ||||| | | <...>-852 [001] ..... 121.550551: tracing_mark_write[LINE TOO BIG] <...>-852 [001] ..... 121.550581: tracing_mark_write: 78901234 This now emulates the same output as trace_pipe. Link: https://lore.kernel.org/linux-trace-kernel/20231209171058.78c1a026@gandalf.local.home Cc: Mark Rutland <mark.rutland@arm.com> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Родитель
c8af7ad729
Коммит
c3729567de
|
@ -4667,7 +4667,11 @@ static int s_show(struct seq_file *m, void *v)
|
||||||
iter->leftover = ret;
|
iter->leftover = ret;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
print_trace_line(iter);
|
ret = print_trace_line(iter);
|
||||||
|
if (ret == TRACE_TYPE_PARTIAL_LINE) {
|
||||||
|
iter->seq.full = 0;
|
||||||
|
trace_seq_puts(&iter->seq, "[LINE TOO BIG]\n");
|
||||||
|
}
|
||||||
ret = trace_print_seq(m, &iter->seq);
|
ret = trace_print_seq(m, &iter->seq);
|
||||||
/*
|
/*
|
||||||
* If we overflow the seq_file buffer, then it will
|
* If we overflow the seq_file buffer, then it will
|
||||||
|
|
Загрузка…
Ссылка в новой задаче