From: Omar Sandoval Date: Fri, 7 Apr 2017 14:53:11 +0000 (-0600) Subject: blk-mq: remap queues when adding/removing hardware queues X-Git-Tag: v4.1.12-106.0.20170710_2300~60 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=a754dcf6a1971fe52d74bbfb467e4cebb43b4386;p=users%2Fjedix%2Flinux-maple.git 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 --- 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); }