--- linux-2.6.0-test2-mm4-O13/kernel/sched.c 2003-08-05 10:08:15.000000000 +1000 +++ linux-2.6.0-test2-mm4-O13.1/kernel/sched.c 2003-08-05 09:58:55.000000000 +1000 @@ -584,13 +584,16 @@ repeat_lock_task: goto repeat_lock_task; } if (old_state == TASK_UNINTERRUPTIBLE){ + rq->nr_uninterruptible--; /* * Tasks on involuntary sleep don't earn - * sleep_avg + * sleep_avg beyond just interactive state. */ - rq->nr_uninterruptible--; - p->timestamp = sched_clock(); - p->activated = -1; + if (NS_TO_JIFFIES(p->sleep_avg) >= + JUST_INTERACTIVE_SLEEP(p)){ + p->timestamp = sched_clock(); + p->activated = -1; + } } if (sync) __activate_task(p, rq);