* [PATCH] ringbuffer: synchronize for resizing
@ 2009-11-03 11:42 Lai Jiangshan
2009-11-03 15:35 ` Steven Rostedt
2009-11-04 11:09 ` [tip:tracing/urgent] ring-buffer: Synchronize resizing buffer with reader lock tip-bot for Lai Jiangshan
0 siblings, 2 replies; 3+ messages in thread
From: Lai Jiangshan @ 2009-11-03 11:42 UTC (permalink / raw)
To: KOSAKI Motohiro, Ingo Molnar, Steven Rostedt, Frederic Weisbecker,
LKML
We got a sudden panic when we reduced the size of the
ringbuffer.
We can reproduce the panic by the following steps:
echo 1 > events/sched/enable
cat trace_pipe > /dev/null &
while ((1))
do
echo 12000 > buffer_size_kb
echo 512 > buffer_size_kb
done
(not more than 5 seconds, panic ...)
Reported-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
---
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index 63446f1..db223fe 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -1196,6 +1196,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages)
atomic_inc(&cpu_buffer->record_disabled);
synchronize_sched();
+ spin_lock_irq(&cpu_buffer->reader_lock);
rb_head_page_deactivate(cpu_buffer);
for (i = 0; i < nr_pages; i++) {
@@ -1210,6 +1211,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages)
return;
rb_reset_cpu(cpu_buffer);
+ spin_unlock_irq(&cpu_buffer->reader_lock);
rb_check_pages(cpu_buffer);
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH] ringbuffer: synchronize for resizing
2009-11-03 11:42 [PATCH] ringbuffer: synchronize for resizing Lai Jiangshan
@ 2009-11-03 15:35 ` Steven Rostedt
2009-11-04 11:09 ` [tip:tracing/urgent] ring-buffer: Synchronize resizing buffer with reader lock tip-bot for Lai Jiangshan
1 sibling, 0 replies; 3+ messages in thread
From: Steven Rostedt @ 2009-11-03 15:35 UTC (permalink / raw)
To: Lai Jiangshan; +Cc: KOSAKI Motohiro, Ingo Molnar, Frederic Weisbecker, LKML
On Tue, 2009-11-03 at 19:42 +0800, Lai Jiangshan wrote:
> We got a sudden panic when we reduced the size of the
> ringbuffer.
>
> We can reproduce the panic by the following steps:
>
> echo 1 > events/sched/enable
> cat trace_pipe > /dev/null &
>
> while ((1))
> do
> echo 12000 > buffer_size_kb
> echo 512 > buffer_size_kb
> done
>
> (not more than 5 seconds, panic ...)
Thanks! I'll push this out for inclusion right away.
-- Steve
>
> Reported-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
> ---
> diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
> index 63446f1..db223fe 100644
> --- a/kernel/trace/ring_buffer.c
> +++ b/kernel/trace/ring_buffer.c
> @@ -1196,6 +1196,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages)
> atomic_inc(&cpu_buffer->record_disabled);
> synchronize_sched();
>
> + spin_lock_irq(&cpu_buffer->reader_lock);
> rb_head_page_deactivate(cpu_buffer);
>
> for (i = 0; i < nr_pages; i++) {
> @@ -1210,6 +1211,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages)
> return;
>
> rb_reset_cpu(cpu_buffer);
> + spin_unlock_irq(&cpu_buffer->reader_lock);
>
> rb_check_pages(cpu_buffer);
>
>
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread* [tip:tracing/urgent] ring-buffer: Synchronize resizing buffer with reader lock
2009-11-03 11:42 [PATCH] ringbuffer: synchronize for resizing Lai Jiangshan
2009-11-03 15:35 ` Steven Rostedt
@ 2009-11-04 11:09 ` tip-bot for Lai Jiangshan
1 sibling, 0 replies; 3+ messages in thread
From: tip-bot for Lai Jiangshan @ 2009-11-04 11:09 UTC (permalink / raw)
To: linux-tip-commits
Cc: linux-kernel, hpa, mingo, rostedt, tglx, kosaki.motohiro, laijs
Commit-ID: f7112949f6a4cd6883d66c882d568c2197321de6
Gitweb: http://git.kernel.org/tip/f7112949f6a4cd6883d66c882d568c2197321de6
Author: Lai Jiangshan <laijs@cn.fujitsu.com>
AuthorDate: Tue, 3 Nov 2009 19:42:45 +0800
Committer: Steven Rostedt <rostedt@goodmis.org>
CommitDate: Wed, 4 Nov 2009 00:04:20 -0500
ring-buffer: Synchronize resizing buffer with reader lock
We got a sudden panic when we reduced the size of the
ringbuffer.
We can reproduce the panic by the following steps:
echo 1 > events/sched/enable
cat trace_pipe > /dev/null &
while ((1))
do
echo 12000 > buffer_size_kb
echo 512 > buffer_size_kb
done
(not more than 5 seconds, panic ...)
Reported-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
LKML-Reference: <4AF01735.9060409@cn.fujitsu.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
kernel/trace/ring_buffer.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index 3ffa502..5dd017f 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -1193,6 +1193,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages)
atomic_inc(&cpu_buffer->record_disabled);
synchronize_sched();
+ spin_lock_irq(&cpu_buffer->reader_lock);
rb_head_page_deactivate(cpu_buffer);
for (i = 0; i < nr_pages; i++) {
@@ -1207,6 +1208,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages)
return;
rb_reset_cpu(cpu_buffer);
+ spin_unlock_irq(&cpu_buffer->reader_lock);
rb_check_pages(cpu_buffer);
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-11-04 11:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-03 11:42 [PATCH] ringbuffer: synchronize for resizing Lai Jiangshan
2009-11-03 15:35 ` Steven Rostedt
2009-11-04 11:09 ` [tip:tracing/urgent] ring-buffer: Synchronize resizing buffer with reader lock 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.