Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cdc8eb984ce47a7c90a049f45229f7b0d59ba781
Commit:     cdc8eb984ce47a7c90a049f45229f7b0d59ba781
Parent:     cb46984504048db946cd551c261df4e70d59a8ea
Author:     Gregory Haskins <[EMAIL PROTECTED]>
AuthorDate: Fri Jan 25 21:08:23 2008 +0100
Committer:  Ingo Molnar <[EMAIL PROTECTED]>
CommitDate: Fri Jan 25 21:08:23 2008 +0100

    sched: RT-balance, only adjust overload state when changing
    
    The overload set/clears were originally idempotent when this logic was first
    implemented.  But that is no longer true due to the addition of the atomic
    counter and this logic was never updated to work properly with that change.
    So only adjust the overload state if it is actually changing to avoid
    getting out of sync.
    
    Signed-off-by: Gregory Haskins <[EMAIL PROTECTED]>
    Signed-off-by: Steven Rostedt <[EMAIL PROTECTED]>
    Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]>
---
 kernel/sched_rt.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
index 57fa3d9..a386758 100644
--- a/kernel/sched_rt.c
+++ b/kernel/sched_rt.c
@@ -34,9 +34,11 @@ static inline void rt_clear_overload(struct rq *rq)
 static void update_rt_migration(struct rq *rq)
 {
        if (rq->rt.rt_nr_migratory && (rq->rt.rt_nr_running > 1)) {
-               rt_set_overload(rq);
-               rq->rt.overloaded = 1;
-       } else {
+               if (!rq->rt.overloaded) {
+                       rt_set_overload(rq);
+                       rq->rt.overloaded = 1;
+               }
+       } else if (rq->rt.overloaded) {
                rt_clear_overload(rq);
                rq->rt.overloaded = 0;
        }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to