Paolo Valente 63f42809f0 block, bfq: do not insert oom queue into position tree
[ Upstream commit 32c59e3a9a5a0b180dd015755d6d18ca31e55935 ]

BFQ maintains an ordered list, implemented with an RB tree, of
head-request positions of non-empty bfq_queues. This position tree,
inherited from CFQ, is used to find bfq_queues that contain I/O close
to each other. BFQ merges these bfq_queues into a single shared queue,
if this boosts throughput on the device at hand.

There is however a special-purpose bfq_queue that does not participate
in queue merging, the oom bfq_queue. Yet, also this bfq_queue could be
wrongly added to the position tree. So bfqq_find_close() could return
the oom bfq_queue, which is a source of further troubles in an
out-of-memory situation. This commit prevents the oom bfq_queue from
being inserted into the position tree.

Tested-by: Patrick Dung <patdung100@gmail.com>
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-12 13:00:08 +01:00
..
2019-09-06 14:33:52 -06:00
2020-01-26 10:01:09 +01:00
2019-07-09 10:45:06 -07:00
2019-09-27 11:40:21 -06:00
2020-01-26 10:01:09 +01:00
2019-10-14 13:54:09 -06:00
2019-07-15 09:20:27 -03:00
2019-08-28 21:17:12 -06:00
2019-07-15 09:20:27 -03:00
2019-08-28 21:17:12 -06:00
2019-09-23 08:05:19 -06:00