• Yang Yang's avatar
    kyber: introduce kyber_depth_updated() · ffa772cf
    Yang Yang authored
    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: default avatarYang Yang <yang.yang@vivo.com>
    Reviewed-by: default avatarOmar Sandoval <osandov@fb.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    ffa772cf
kyber-iosched.c 27.8 KB