Re: [PATCH v7 1/3] tracing: Fix subbuf resize races with trace_pipe_raw readers
From: Vincent Donnefort <hidden>
Date: 2026-08-25 12:52:18
Also in:
sashiko-reviews
On Tue, Aug 25, 2026 at 08:47:07AM -0400, Steven Rostedt wrote:
On Tue, 25 Aug 2026 09:26:07 +0100 Vincent Donnefort [off-list ref] wrote:quoted
Do you think it is still worth to reduce the window of discrepency between buffer->subbuf_order and buffer_page->order?Can you elaborate more on what you mean? -- Steve
Something like this.
@@ -7469,8 +7473,6 @@ int ring_buffer_subbuf_order_set(struct trace_buffer *buffer, int order) /* Make sure all commits have finished */ synchronize_rcu(); - buffer->subbuf_order = order; - /* Make sure all new buffers are allocated, before deleting the old ones */ for_each_buffer_cpu(buffer, cpu) {
@@ -7500,6 +7502,7 @@ int ring_buffer_subbuf_order_set(struct trace_buffer *buffer, int order) /* Allocate the new size buffer */ INIT_LIST_HEAD(&cpu_buffer->new_pages); if (__rb_allocate_pages(cpu_buffer, nr_pages, + order, &cpu_buffer->new_pages)) { /* not enough memory for new pages */ err = -ENOMEM;
@@ -7507,6 +7510,8 @@ int ring_buffer_subbuf_order_set(struct trace_buffer *buffer, int order) } } + buffer->subbuf_order = order; + for_each_buffer_cpu(buffer, cpu) { struct buffer_data_read_page old_free_data_page; struct list_head old_pages;
But now with the idea of copying the data when data_page->order != reader_page->order, I am less convinced there's any gain. -- Vincent