Orabug:
26397427
blk_mq_update_nr_hw_queues() used to remap hardware queues, which is the
behavior that drivers expect. However, commit
4e68a011428a changed
blk_mq_queue_reinit() to not remap queues for the case of CPU
hotplugging, inadvertently making blk_mq_update_nr_hw_queues() not remap
queues as well. This breaks, for example, NBD's multi-connection mode,
leaving the added hardware queues unused. Fix it by making
blk_mq_update_nr_hw_queues() explicitly remap the queues.
Fixes: 4e68a011428a ("blk-mq: don't redistribute hardware queues on a CPU hotplug event")
Reviewed-by: Keith Busch <keith.busch@intel.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
(cherry picked from commit
ebe8bddb6e30d7a02775b9972099271fc5910f37)
Conflicts:
block/blk-mq.c
Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
Reviewed-by: Jack Vogel <jack.vogel@oracle.com>
else
blk_queue_make_request(q, blk_sq_make_request);
+ blk_mq_update_queue_map(q->mq_map, q->nr_hw_queues, cpu_online_mask);
blk_mq_queue_reinit(q, cpu_online_mask);
}