From: Ingo Molnar <mingo@elte.hu>

Shortcut escape from this queue if a hot task is met.  I'm skeptical that
it is good, but again it gives ppl something to test.


---

 25-akpm/kernel/sched.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff -puN kernel/sched.c~sched-migrate-shortcut kernel/sched.c
--- 25/kernel/sched.c~sched-migrate-shortcut	Mon Apr 26 15:31:41 2004
+++ 25-akpm/kernel/sched.c	Mon Apr 26 15:31:41 2004
@@ -1311,7 +1311,7 @@ int can_migrate_task(task_t *p, runqueue
 	if (idle == NEWLY_IDLE ||
 			sd->nr_balance_failed < sd->cache_nice_tries) {
 		if (task_hot(p, rq->timestamp_last_tick, sd))
-			return 0;
+			return -1;
 	}
 
 	return 1;
@@ -1330,7 +1330,7 @@ static int move_tasks(runqueue_t *this_r
 {
 	prio_array_t *array, *dst_array;
 	struct list_head *head, *curr;
-	int idx, pulled = 0;
+	int ret, idx, pulled = 0;
 	task_t *tmp;
 
 	if (max_nr_move <= 0 || busiest->nr_running <= 1)
@@ -1369,7 +1369,12 @@ skip_queue:
 
 	curr = curr->next;
 
-	if (!can_migrate_task(tmp, busiest, this_cpu, sd, idle)) {
+	ret = can_migrate_task(tmp, busiest, this_cpu, sd, idle);
+	if (ret == -1) {
+		idx++;
+		goto skip_bitmap;
+	}
+	if (!ret) {
 		if (curr != head)
 			goto skip_queue;
 		idx++;

_