• Weiping Zhang's avatar
    block: update hctx map when use multiple maps · fe35ec58
    Weiping Zhang authored
    There is an issue when tune the number for read and write queues,
    if the total queue count was not changed. The hctx->type cannot
    be updated, since __blk_mq_update_nr_hw_queues will return directly
    if the total queue count has not been changed.
    
    Reproduce:
    
    dmesg | grep "default/read/poll"
    [    2.607459] nvme nvme0: 48/0/0 default/read/poll queues
    cat /sys/kernel/debug/block/nvme0n1/hctx*/type | sort | uniq -c
         48 default
    
    tune the write queues to 24:
    echo 24 > /sys/module/nvme/parameters/write_queues
    echo 1 > /sys/block/nvme0n1/device/reset_controller
    
    dmesg | grep "default/read/poll"
    [  433.547235] nvme nvme0: 24/24/0 default/read/poll queues
    
    cat /sys/kernel/debug/block/nvme0n1/hctx*/type | sort | uniq -c
         48 default
    
    The driver's hardware queue mapping is not same as block layer.
    Signed-off-by: default avatarWeiping Zhang <zhangweiping@didiglobal.com>
    Reviewed-by: default avatarMing Lei <ming.lei@redhat.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    fe35ec58
blk-mq.c 93.5 KB