From a754dcf6a1971fe52d74bbfb467e4cebb43b4386 Mon Sep 17 00:00:00 2001 From: Omar Sandoval Date: Fri, 7 Apr 2017 08:53:11 -0600 Subject: [PATCH] blk-mq: remap queues when adding/removing hardware queues 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 Reviewed-by: Christoph Hellwig Reviewed-by: Sagi Grimberg Signed-off-by: Omar Sandoval Signed-off-by: Jens Axboe (cherry picked from commit ebe8bddb6e30d7a02775b9972099271fc5910f37) Conflicts: block/blk-mq.c Signed-off-by: Junxiao Bi Reviewed-by: Jack Vogel --- block/blk-mq.c | 1 + 1 file changed, 1 insertion(+) diff --git a/block/blk-mq.c b/block/blk-mq.c index db7d5c900429..e6377ea56c9c 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -2304,6 +2304,7 @@ void blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set, int nr_hw_queues) 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); } -- 2.50.1