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>
This commit is contained in:
Christoph Hellwig 2017-06-26 12:20:56 +02:00 коммит произвёл Thomas Gleixner
Родитель bf22ff45be
Коммит 5f042e7cbd
1 изменённых файлов: 2 добавлений и 3 удалений

Просмотреть файл

@ -35,7 +35,6 @@ int blk_mq_map_queues(struct blk_mq_tag_set *set)
{ {
unsigned int *map = set->mq_map; unsigned int *map = set->mq_map;
unsigned int nr_queues = set->nr_hw_queues; 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; unsigned int i, nr_cpus, nr_uniq_cpus, queue, first_sibling;
cpumask_var_t cpus; cpumask_var_t cpus;
@ -44,7 +43,7 @@ int blk_mq_map_queues(struct blk_mq_tag_set *set)
cpumask_clear(cpus); cpumask_clear(cpus);
nr_cpus = nr_uniq_cpus = 0; nr_cpus = nr_uniq_cpus = 0;
for_each_cpu(i, online_mask) { for_each_present_cpu(i) {
nr_cpus++; nr_cpus++;
first_sibling = get_first_sibling(i); first_sibling = get_first_sibling(i);
if (!cpumask_test_cpu(first_sibling, cpus)) if (!cpumask_test_cpu(first_sibling, cpus))
@ -54,7 +53,7 @@ int blk_mq_map_queues(struct blk_mq_tag_set *set)
queue = 0; queue = 0;
for_each_possible_cpu(i) { for_each_possible_cpu(i) {
if (!cpumask_test_cpu(i, online_mask)) { if (!cpumask_test_cpu(i, cpu_present_mask)) {
map[i] = 0; map[i] = 0;
continue; continue;
} }