lkml.org 
[lkml]   [2017]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 tip/core/rcu 04/18] rcu: Only dump stalled-tasks stacks if there was a real stall
    Date
    From: Byungchul Park <byungchul.park@lge.com>

    The print_other_cpu_stall() function currently unconditionally invokes
    rcu_print_detail_task_stall(). This is OK because if there was a stall
    sufficient to cause print_other_cpu_stall() to be invoked, that stall
    is very likely to persist through the entire print_other_cpu_stall()
    execution. However, if the stall did not persist, the variable ndetected
    will be zero, and that variable is already tested in an "if" statement.
    Therefore, this commit moves the call to rcu_print_detail_task_stall()
    under that pre-existing "if" to improve readability, with a very rare
    reduction in overhead.

    Signed-off-by: Byungchul Park <byungchul.park@lge.com>
    [ paulmck: Reworked commit log. ]
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Reviewed-by: Josh Triplett <josh@joshtriplett.org>
    ---
    kernel/rcu/tree.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
    index cb4e2056ccf3..6232d2f9a84e 100644
    --- a/kernel/rcu/tree.c
    +++ b/kernel/rcu/tree.c
    @@ -1379,6 +1379,9 @@ static void print_other_cpu_stall(struct rcu_state *rsp, unsigned long gpnum)
    (long)rsp->gpnum, (long)rsp->completed, totqlen);
    if (ndetected) {
    rcu_dump_cpu_stacks(rsp);
    +
    + /* Complain about tasks blocking the grace period. */
    + rcu_print_detail_task_stall(rsp);
    } else {
    if (READ_ONCE(rsp->gpnum) != gpnum ||
    READ_ONCE(rsp->completed) == gpnum) {
    @@ -1395,9 +1398,6 @@ static void print_other_cpu_stall(struct rcu_state *rsp, unsigned long gpnum)
    }
    }

    - /* Complain about tasks blocking the grace period. */
    - rcu_print_detail_task_stall(rsp);
    -
    rcu_check_gp_kthread_starvation(rsp);

    panic_on_rcu_stall();
    --
    2.5.2
    \
     
     \ /
      Last update: 2017-01-24 22:53    [W:4.118 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site