blk-mq: Include all present CPUs in the default queue mapping
authorChristoph Hellwig <hch@lst.de>
Mon, 26 Jun 2017 10:20:56 +0000 (12:20 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 28 Jun 2017 21:00:06 +0000 (23:00 +0200)
This way we get a nice distribution independent of the current cpu
online / offline state.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jens Axboe <axboe@kernel.dk>
Cc: Keith Busch <keith.busch@intel.com>
Cc: linux-block@vger.kernel.org
Cc: linux-nvme@lists.infradead.org
Link: http://lkml.kernel.org/r/20170626102058.10200-2-hch@lst.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
block/blk-mq-cpumap.c

index 8e61e8640e1701a8736ab791aaac79983bde6225..5eaecd40f701f66f8e516ffa6bdf90ff21554933 100644 (file)
@@ -35,7 +35,6 @@ int blk_mq_map_queues(struct blk_mq_tag_set *set)
 {
        unsigned int *map = set->mq_map;
        unsigned int nr_queues = set->nr_hw_queues;
-       const struct cpumask *online_mask = cpu_online_mask;
        unsigned int i, nr_cpus, nr_uniq_cpus, queue, first_sibling;
        cpumask_var_t cpus;
 
@@ -44,7 +43,7 @@ int blk_mq_map_queues(struct blk_mq_tag_set *set)
 
        cpumask_clear(cpus);
        nr_cpus = nr_uniq_cpus = 0;
-       for_each_cpu(i, online_mask) {
+       for_each_present_cpu(i) {
                nr_cpus++;
                first_sibling = get_first_sibling(i);
                if (!cpumask_test_cpu(first_sibling, cpus))
@@ -54,7 +53,7 @@ int blk_mq_map_queues(struct blk_mq_tag_set *set)
 
        queue = 0;
        for_each_possible_cpu(i) {
-               if (!cpumask_test_cpu(i, online_mask)) {
+               if (!cpumask_test_cpu(i, cpu_present_mask)) {
                        map[i] = 0;
                        continue;
                }