lkml.org 
[lkml]   [2020]   [Mar]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[RFC][PATCH 07/11] ring-buffer: Optimize rb_iter_head_event()
    From: "Steven Rostedt (VMware)" <rostedt@goodmis.org>

    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.

    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    ---
    kernel/trace/ring_buffer.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
    index 475338fda969..5979327254f9 100644
    --- a/kernel/trace/ring_buffer.c
    +++ b/kernel/trace/ring_buffer.c
    @@ -1929,6 +1929,9 @@ rb_iter_head_event(struct ring_buffer_iter *iter)
    unsigned long commit;
    unsigned length;

    + if (iter->head != iter->next_event)
    + return iter->event;
    +
    /*
    * When the writer goes across pages, it issues a cmpxchg which
    * is a mb(), which will synchronize with the rmb here.
    --
    2.25.1

    \
     
     \ /
      Last update: 2020-03-17 22:35    [W:2.611 / U:0.232 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site