bfq: update internal depth state when queue depth changes
authorJens Axboe <axboe@kernel.dk>
Fri, 10 May 2019 17:56:32 +0000 (10:56 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 May 2019 17:41:17 +0000 (19:41 +0200)
commit824c212908b6a6b9bac8fc21cdeec24021f390d0
tree6d4b0180653c002afdca6d2683cbdb7d1e47da4c
parent3351e9d39947881910230a73be77e6f29ab8b72e
bfq: update internal depth state when queue depth changes

commit 77f1e0a52d26242b6c2dba019f6ebebfb9ff701e upstream

A previous commit moved the shallow depth and BFQ depth map calculations
to be done at init time, moving it outside of the hotter IO path. This
potentially causes hangs if the users changes the depth of the scheduler
map, by writing to the 'nr_requests' sysfs file for that device.

Add a blk-mq-sched hook that allows blk-mq to inform the scheduler if
the depth changes, so that the scheduler can update its internal state.

Signed-off-by: Eric Wheeler <bfq@linux.ewheeler.net>
Tested-by: Kai Krakow <kai@kaishome.de>
Reported-by: Paolo Valente <paolo.valente@linaro.org>
Fixes: f0635b8a416e ("bfq: calculate shallow depths at init time")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Cc: stable@vger.kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
block/bfq-iosched.c
block/blk-mq.c
include/linux/elevator.h