Revert "ring-buffer: Fix wrong stat of cpu_buffer->read"
This reverts commit 77996fa5c6
which is
commit 2d093282b0d4357373497f65db6a05eb0c28b7c8 upstream.
It breaks the Android abi and isn't really needed for Android systems.
If it is needed in the future, it can come back in an ABI-safe way.
Bug: 161946584
Change-Id: I1def9966078008125f445941af21e518617a0011
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
parent
7f81705800
commit
38b64945f1
@ -491,8 +491,6 @@ struct ring_buffer_per_cpu {
|
||||
rb_time_t before_stamp;
|
||||
u64 event_stamp[MAX_NEST];
|
||||
u64 read_stamp;
|
||||
/* pages removed since last reset */
|
||||
unsigned long pages_removed;
|
||||
/* ring buffer pages to update, > 0 to add, < 0 to remove */
|
||||
long nr_pages_to_update;
|
||||
struct list_head new_pages; /* new pages to add */
|
||||
@ -530,7 +528,6 @@ struct ring_buffer_iter {
|
||||
struct buffer_page *head_page;
|
||||
struct buffer_page *cache_reader_page;
|
||||
unsigned long cache_read;
|
||||
unsigned long cache_pages_removed;
|
||||
u64 read_stamp;
|
||||
u64 page_stamp;
|
||||
struct ring_buffer_event *event;
|
||||
@ -1966,8 +1963,6 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned long nr_pages)
|
||||
to_remove = rb_list_head(to_remove)->next;
|
||||
head_bit |= (unsigned long)to_remove & RB_PAGE_HEAD;
|
||||
}
|
||||
/* Read iterators need to reset themselves when some pages removed */
|
||||
cpu_buffer->pages_removed += nr_removed;
|
||||
|
||||
next_page = rb_list_head(to_remove)->next;
|
||||
|
||||
@ -1989,6 +1984,12 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned long nr_pages)
|
||||
cpu_buffer->head_page = list_entry(next_page,
|
||||
struct buffer_page, list);
|
||||
|
||||
/*
|
||||
* change read pointer to make sure any read iterators reset
|
||||
* themselves
|
||||
*/
|
||||
cpu_buffer->read = 0;
|
||||
|
||||
/* pages are removed, resume tracing and then free the pages */
|
||||
atomic_dec(&cpu_buffer->record_disabled);
|
||||
raw_spin_unlock_irq(&cpu_buffer->reader_lock);
|
||||
@ -4391,7 +4392,6 @@ static void rb_iter_reset(struct ring_buffer_iter *iter)
|
||||
|
||||
iter->cache_reader_page = iter->head_page;
|
||||
iter->cache_read = cpu_buffer->read;
|
||||
iter->cache_pages_removed = cpu_buffer->pages_removed;
|
||||
|
||||
if (iter->head) {
|
||||
iter->read_stamp = cpu_buffer->read_stamp;
|
||||
@ -4972,13 +4972,12 @@ rb_iter_peek(struct ring_buffer_iter *iter, u64 *ts)
|
||||
buffer = cpu_buffer->buffer;
|
||||
|
||||
/*
|
||||
* Check if someone performed a consuming read to the buffer
|
||||
* or removed some pages from the buffer. In these cases,
|
||||
* iterator was invalidated and we need to reset it.
|
||||
* Check if someone performed a consuming read to
|
||||
* the buffer. A consuming read invalidates the iterator
|
||||
* and we need to reset the iterator in this case.
|
||||
*/
|
||||
if (unlikely(iter->cache_read != cpu_buffer->read ||
|
||||
iter->cache_reader_page != cpu_buffer->reader_page ||
|
||||
iter->cache_pages_removed != cpu_buffer->pages_removed))
|
||||
iter->cache_reader_page != cpu_buffer->reader_page))
|
||||
rb_iter_reset(iter);
|
||||
|
||||
again:
|
||||
@ -5492,7 +5491,6 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
|
||||
cpu_buffer->last_overrun = 0;
|
||||
|
||||
rb_head_page_activate(cpu_buffer);
|
||||
cpu_buffer->pages_removed = 0;
|
||||
}
|
||||
|
||||
/* Must have disabled the cpu buffer then done a synchronize_rcu */
|
||||
|
Loading…
Reference in New Issue
Block a user