[PATCH] cfq-iosched: correctly set ioprio on both targets
Patch originally from Vasily Tarasov <vtaras@sw.ru> If you set io-priority of process 1 using sys_ioprio_set system call by another process 2 (like ionice do), then cfq_init_prio_data() function sets priority of process 2 (current) on queue of process 1 and clears the flag, that designates change of ioprio. So the process 1 will work like with priority of process 2. I propose not to call cfq_init_prio_data() on io-priority change, but only mark queue as queue with changed prority. Every time when new request comes cfq-scheduler checks for this flag and atomaticaly changes priority of queue to new value. Signed-off-by: Jens Axboe <axboe@suse.de>
This commit is contained in:
parent
b17fd9bceb
commit
35e6077cb1
|
@ -1388,10 +1388,9 @@ static inline void changed_ioprio(struct cfq_io_context *cic)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cfqq = cic->cfqq[SYNC];
|
cfqq = cic->cfqq[SYNC];
|
||||||
if (cfqq) {
|
if (cfqq)
|
||||||
cfq_mark_cfqq_prio_changed(cfqq);
|
cfq_mark_cfqq_prio_changed(cfqq);
|
||||||
cfq_init_prio_data(cfqq);
|
|
||||||
}
|
|
||||||
spin_unlock(cfqd->queue->queue_lock);
|
spin_unlock(cfqd->queue->queue_lock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue