Переглянути джерело

[PATCH] cfq-iosched: busy_rr fairness fix

Now that we select busy_rr for possible service, insert entries at the
back of that list instead of at the front.

Signed-off-by: Jens Axboe <axboe@suse.de>
Jens Axboe 19 роки тому
батько
коміт
b52a834892
1 змінених файлів з 5 додано та 2 видалено
  1. 5 2
      block/cfq-iosched.c

+ 5 - 2
block/cfq-iosched.c

@@ -501,10 +501,13 @@ static void cfq_resort_rr_list(struct cfq_queue *cfqq, int preempted)
 
 	/*
 	 * if queue was preempted, just add to front to be fair. busy_rr
-	 * isn't sorted.
+	 * isn't sorted, but insert at the back for fairness.
 	 */
 	if (preempted || list == &cfqd->busy_rr) {
-		list_add(&cfqq->cfq_list, list);
+		if (preempted)
+			list = list->prev;
+
+		list_add_tail(&cfqq->cfq_list, list);
 		return;
 	}