[lkml]   [2022]   [Jun]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[PATCH v2 5/8] rcu/nocb: Wake up gp thread when flushing
    We notice that rcu_barrier() can take a really long time. It appears
    that this can happen when all CBs are lazy and the timer does not fire
    yet. So after flushing, nothing wakes up GP thread. This patch forces
    GP thread to wake when bypass flushing happens, this fixes the
    rcu_barrier() delays with lazy CBs.

    Signed-off-by: Joel Fernandes (Google) <>
    kernel/rcu/tree_nocb.h | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/kernel/rcu/tree_nocb.h b/kernel/rcu/tree_nocb.h
    index 2f5da12811a5..b481f1ea57c0 100644
    --- a/kernel/rcu/tree_nocb.h
    +++ b/kernel/rcu/tree_nocb.h
    @@ -325,6 +325,8 @@ static bool rcu_nocb_do_flush_bypass(struct rcu_data *rdp, struct rcu_head *rhp,
    rcu_segcblist_insert_pend_cbs(&rdp->cblist, &rcl);
    WRITE_ONCE(rdp->nocb_bypass_first, j);
    + wake_nocb_gp(rdp, true);
    return true;

     \ /
      Last update: 2022-06-23 00:52    [W:2.333 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site