From 191802b83d94b97be0231e504db719f797698e0e Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Wed, 19 Jul 2006 20:29:12 +0200 Subject: [PATCH] --- yaml --- r: 37559 b: refs/heads/master c: bf57225670bcbeb357182d800736b4782cde7295 h: refs/heads/master i: 37557: 00fd4e34b82e382b1c316408c3e38299e3c36b78 37555: 03e7859e1e77c6dd7cb468a7f0836f89fd4aa03e 37551: 9f03c4fd1b0fe1f05801651b27342747e93fdbba v: v3 --- [refs] | 2 +- trunk/block/cfq-iosched.c | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index e44ffd20864d..7ea62258ab1a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: dc72ef4ae35c2016fb594bcc85ce871376682174 +refs/heads/master: bf57225670bcbeb357182d800736b4782cde7295 diff --git a/trunk/block/cfq-iosched.c b/trunk/block/cfq-iosched.c index 9f684cc66bd1..141104835952 100644 --- a/trunk/block/cfq-iosched.c +++ b/trunk/block/cfq-iosched.c @@ -1539,17 +1539,19 @@ cfq_should_preempt(struct cfq_data *cfqd, struct cfq_queue *new_cfqq, */ static void cfq_preempt_queue(struct cfq_data *cfqd, struct cfq_queue *cfqq) { - struct cfq_queue *__cfqq, *next; - - list_for_each_entry_safe(__cfqq, next, &cfqd->cur_rr, cfq_list) - cfq_resort_rr_list(__cfqq, 1); + cfq_slice_expired(cfqd, 1); if (!cfqq->slice_left) cfqq->slice_left = cfq_prio_to_slice(cfqd, cfqq) / 2; + /* + * Put the new queue at the front of the of the current list, + * so we know that it will be selected next. + */ + BUG_ON(!cfq_cfqq_on_rr(cfqq)); + list_move(&cfqq->cfq_list, &cfqd->cur_rr); + cfqq->slice_end = cfqq->slice_left + jiffies; - cfq_slice_expired(cfqd, 1); - __cfq_set_active_queue(cfqd, cfqq); } /*