diff options
author | Christoph Hellwig <hch@lst.de> | 2017-06-26 06:20:56 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2017-06-28 17:00:06 -0400 |
commit | 5f042e7cbd9ebd3580077dcdc21f35e68c2adf5f (patch) | |
tree | 342e26fb18f34d6e702e21f5384da75f951ddce8 | |
parent | bf22ff45bed664aefb5c4e43029057a199b7070c (diff) |
blk-mq: Include all present CPUs in the default queue mapping
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>
-rw-r--r-- | block/blk-mq-cpumap.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/block/blk-mq-cpumap.c b/block/blk-mq-cpumap.c index 8e61e8640e17..5eaecd40f701 100644 --- a/block/blk-mq-cpumap.c +++ b/block/blk-mq-cpumap.c | |||
@@ -35,7 +35,6 @@ int blk_mq_map_queues(struct blk_mq_tag_set *set) | |||
35 | { | 35 | { |
36 | unsigned int *map = set->mq_map; | 36 | unsigned int *map = set->mq_map; |
37 | unsigned int nr_queues = set->nr_hw_queues; | 37 | unsigned int nr_queues = set->nr_hw_queues; |
38 | const struct cpumask *online_mask = cpu_online_mask; | ||
39 | unsigned int i, nr_cpus, nr_uniq_cpus, queue, first_sibling; | 38 | unsigned int i, nr_cpus, nr_uniq_cpus, queue, first_sibling; |
40 | cpumask_var_t cpus; | 39 | cpumask_var_t cpus; |
41 | 40 | ||
@@ -44,7 +43,7 @@ int blk_mq_map_queues(struct blk_mq_tag_set *set) | |||
44 | 43 | ||
45 | cpumask_clear(cpus); | 44 | cpumask_clear(cpus); |
46 | nr_cpus = nr_uniq_cpus = 0; | 45 | nr_cpus = nr_uniq_cpus = 0; |
47 | for_each_cpu(i, online_mask) { | 46 | for_each_present_cpu(i) { |
48 | nr_cpus++; | 47 | nr_cpus++; |
49 | first_sibling = get_first_sibling(i); | 48 | first_sibling = get_first_sibling(i); |
50 | if (!cpumask_test_cpu(first_sibling, cpus)) | 49 | if (!cpumask_test_cpu(first_sibling, cpus)) |
@@ -54,7 +53,7 @@ int blk_mq_map_queues(struct blk_mq_tag_set *set) | |||
54 | 53 | ||
55 | queue = 0; | 54 | queue = 0; |
56 | for_each_possible_cpu(i) { | 55 | for_each_possible_cpu(i) { |
57 | if (!cpumask_test_cpu(i, online_mask)) { | 56 | if (!cpumask_test_cpu(i, cpu_present_mask)) { |
58 | map[i] = 0; | 57 | map[i] = 0; |
59 | continue; | 58 | continue; |
60 | } | 59 | } |