mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
bcache: allow quick writeback when backing idle
If the control system would wait for at least half a second, and there's been no reqs hitting the backing disk for awhile: use an alternate mode where we have at most one contiguous set of writebacks in flight at a time. (But don't otherwise delay). If front-end IO appears, it will still be quick, as it will only have to contend with one real operation in flight. But otherwise, we'll be sending data to the backing disk as quickly as it can accept it (with one op at a time). Signed-off-by: Michael Lyle <mlyle@lyle.org> Reviewed-by: Tang Junhui <tang.junhui@zte.com.cn> Acked-by: Coly Li <colyli@suse.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
6e6ccc67b9
commit
b1092c9af9
3 changed files with 29 additions and 0 deletions
|
@ -356,6 +356,27 @@ static void read_dirty(struct cached_dev *dc)
|
|||
|
||||
delay = writeback_delay(dc, size);
|
||||
|
||||
/* If the control system would wait for at least half a
|
||||
* second, and there's been no reqs hitting the backing disk
|
||||
* for awhile: use an alternate mode where we have at most
|
||||
* one contiguous set of writebacks in flight at a time. If
|
||||
* someone wants to do IO it will be quick, as it will only
|
||||
* have to contend with one operation in flight, and we'll
|
||||
* be round-tripping data to the backing disk as quickly as
|
||||
* it can accept it.
|
||||
*/
|
||||
if (delay >= HZ / 2) {
|
||||
/* 3 means at least 1.5 seconds, up to 7.5 if we
|
||||
* have slowed way down.
|
||||
*/
|
||||
if (atomic_inc_return(&dc->backing_idle) >= 3) {
|
||||
/* Wait for current I/Os to finish */
|
||||
closure_sync(&cl);
|
||||
/* And immediately launch a new set. */
|
||||
delay = 0;
|
||||
}
|
||||
}
|
||||
|
||||
while (!kthread_should_stop() && delay) {
|
||||
schedule_timeout_interruptible(delay);
|
||||
delay = writeback_delay(dc, 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue