lkml.org 
[lkml]   [2009]   [Feb]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 2/2 v4] softlockup: check all tasks in hung_task
    On Thu, 5 Feb 2009 15:34:53 +0100 Ingo Molnar <mingo@elte.hu> wrote:

    >
    > Subject: [PATCH] softlockup: check all tasks in hung_task
    >
    > Impact: extend the scope of hung-task checks
    >

    A nanonit:

    > +static const int hung_task_batching = 1024;

    static const definitions look pretty but they're a bit misleading.

    > static void check_hung_uninterruptible_tasks(unsigned long timeout)
    > {
    > + int batch_count = hung_task_batching;
    > int max_count = sysctl_hung_task_check_count;
    > unsigned long now = get_timestamp();
    > struct task_struct *g, *t;
    > @@ -131,6 +159,13 @@ static void check_hung_uninterruptible_tasks(unsigned long timeout)
    > do_each_thread(g, t) {
    > if (!--max_count)
    > goto unlock;
    > + if (!--batch_count) {
    > + batch_count = hung_task_batching;
    > + rcu_lock_break(g, t);
    > + /* Exit if t or g was unhashed during refresh. */
    > + if (t->state == TASK_DEAD || g->state == TASK_DEAD)
    > + goto unlock;
    > + }
    > /* use "==" to skip the TASK_KILLABLE tasks waiting on NFS */
    > if (t->state == TASK_UNINTERRUPTIBLE)
    > check_hung_task(t, now, timeout);

    The reader of this area of the code will expect that hung_task_batching
    is a variable. It _looks_ like the value of that variable can be altered
    at any time by some other thread. It _looks_ like this code will explode
    if someone has accidentally set hung_task_batching to zero, etc.

    But none of that is actually true, because hung_task_batching is, surprisingly,
    a compile-time constant.

    All this misleadingness would be fixed if it were called
    HUNG_TASK_BATCHING. But then it wouldn't be pretty.



    \
     
     \ /
      Last update: 2009-02-05 18:53    [W:4.038 / U:0.040 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site