ring-buffer: Optimize rb_iter_head_event()
As it is fine to perform several "peeks" of event data in the ring buffer via the iterator before moving it forward, do not re-read the event, just return what was read before. Otherwise, it can cause inconsistent results, especially when testing multiple CPU buffers to interleave them. Link: http://lkml.kernel.org/r/20200317213416.592032170@goodmis.org Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
parent
ff84c50cfb
commit
153368ce1b
|
@ -1929,6 +1929,9 @@ rb_iter_head_event(struct ring_buffer_iter *iter)
|
||||||
unsigned long commit;
|
unsigned long commit;
|
||||||
unsigned length;
|
unsigned length;
|
||||||
|
|
||||||
|
if (iter->head != iter->next_event)
|
||||||
|
return iter->event;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When the writer goes across pages, it issues a cmpxchg which
|
* When the writer goes across pages, it issues a cmpxchg which
|
||||||
* is a mb(), which will synchronize with the rmb here.
|
* is a mb(), which will synchronize with the rmb here.
|
||||||
|
|
Loading…
Reference in New Issue