mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 13:41:51 +00:00
cfq-iosched: Respect ioprio_class when preempting
In cfq_should_preempt(), we currently allow some cases where a non-RT request can preempt an ongoing RT cfqq timeslice. This should not happen. Examples include: o A sync_noidle wl type non-RT request pre-empting a sync_noidle wl type cfqq on which we are idling. o Once we have per-cgroup async queues, a non-RT sync request pre-empting a RT async cfqq. Signed-off-by: Divyesh Shah<dpshah@google.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
7af92f8754
commit
875feb63b9
@ -3076,6 +3076,12 @@ cfq_should_preempt(struct cfq_data *cfqd, struct cfq_queue *new_cfqq,
|
|||||||
if (cfq_class_idle(cfqq))
|
if (cfq_class_idle(cfqq))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Don't allow a non-RT request to preempt an ongoing RT cfqq timeslice.
|
||||||
|
*/
|
||||||
|
if (cfq_class_rt(cfqq) && !cfq_class_rt(new_cfqq))
|
||||||
|
return false;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* if the new request is sync, but the currently running queue is
|
* if the new request is sync, but the currently running queue is
|
||||||
* not, let the sync request have priority.
|
* not, let the sync request have priority.
|
||||||
|
Loading…
Reference in New Issue
Block a user