block, bfq: add missing rq_pos_tree update on rq removal
authorPaolo Valente <paolo.valente@linaro.org>
Wed, 20 Dec 2017 11:38:31 +0000 (12:38 +0100)
committerJens Axboe <axboe@kernel.dk>
Fri, 5 Jan 2018 16:26:06 +0000 (09:26 -0700)
commit05e90283561648301e30232fe0c91bd345ceba03
treeeaa740f53e70ef02fa1ec9c8d7db8fe5e00d40bb
parentf0ba5ea2fe45c0ad24a7dedae84a97f7aa046494
block, bfq: add missing rq_pos_tree update on rq removal

If two processes do I/O close to each other, then BFQ merges the
bfq_queues associated with these processes, to get a more sequential
I/O, and thus a higher throughput.  In this respect, to detect whether
two processes are doing I/O close to each other, BFQ keeps a list of
the head-of-line I/O requests of all active bfq_queues.  The list is
ordered by initial sectors, and implemented through a red-black tree
(rq_pos_tree).

Unfortunately, the update of the rq_pos_tree was incomplete, because
the tree was not updated on the removal of the head-of-line I/O
request of a bfq_queue, in case the queue did not remain empty. This
commit adds the missing update.

Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Angelo Ruocco <angeloruocco90@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bfq-iosched.c