kyber: introduce kyber_depth_updated()
authorYang Yang <yang.yang@vivo.com>
Fri, 5 Feb 2021 09:13:10 +0000 (01:13 -0800)
committerJens Axboe <axboe@kernel.dk>
Mon, 22 Feb 2021 19:37:57 +0000 (12:37 -0700)
commitffa772cfe9356ce94d3061335c2681f60e7c1c5b
treeeb1b8f17f4e31786960caf70b621150761f799fd
parent4ceddce55eb35d15b0f87f5dcf6f0058fd15d3a4
kyber: introduce kyber_depth_updated()

Hang occurs when user changes the scheduler queue depth, by writing to
the 'nr_requests' sysfs file of that device.

The details of the environment that we found the problem are as follows:
  an eMMC block device
  total driver tags: 16
  default queue_depth: 32
  kqd->async_depth initialized in kyber_init_sched() with queue_depth=32

Then we change queue_depth to 256, by writing to the 'nr_requests' sysfs
file. But kqd->async_depth don't be updated after queue_depth changes.
Now the value of async depth is too small for queue_depth=256, this may
cause hang.

This patch introduces kyber_depth_updated(), so that kyber can update
async depth when queue depth changes.

Signed-off-by: Yang Yang <yang.yang@vivo.com>
Reviewed-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/kyber-iosched.c