diff options
author | Paolo Valente <[email protected]> | 2020-02-03 11:40:54 +0100 |
---|---|---|
committer | Jens Axboe <[email protected]> | 2020-02-03 06:58:14 -0700 |
commit | f718b093277df582fbf8775548a4f163e664d282 (patch) | |
tree | 2536f43e3c22ff201630e1561c928c465d13e466 /tools/perf/util/trace-event-scripting.c | |
parent | 49d08d596e85f39ded48e85df362827cbab1f5ae (diff) |
block, bfq: do not plug I/O for bfq_queues with no proc refs
Commit 478de3380c1c ("block, bfq: deschedule empty bfq_queues not
referred by any process") fixed commit 3726112ec731 ("block, bfq:
re-schedule empty queues if they deserve I/O plugging") by
descheduling an empty bfq_queue when it remains with not process
reference. Yet, this still left a case uncovered: an empty bfq_queue
with not process reference that remains in service. This happens for
an in-service sync bfq_queue that is deemed to deserve I/O-dispatch
plugging when it remains empty. Yet no new requests will arrive for
such a bfq_queue if no process sends requests to it any longer. Even
worse, the bfq_queue may happen to be prematurely freed while still in
service (because there may remain no reference to it any longer).
This commit solves this problem by preventing I/O dispatch from being
plugged for the in-service bfq_queue, if the latter has no process
reference (the bfq_queue is then prevented from remaining in service).
Fixes: 3726112ec731 ("block, bfq: re-schedule empty queues if they deserve I/O plugging")
Tested-by: Oleksandr Natalenko <[email protected]>
Reported-by: Patrick Dung <[email protected]>
Tested-by: Patrick Dung <[email protected]>
Signed-off-by: Paolo Valente <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
Diffstat (limited to 'tools/perf/util/trace-event-scripting.c')
0 files changed, 0 insertions, 0 deletions