Re: blk_mq_update_queue_map makes an (invalid?) assumption about cpuordering

From: Jens Axboe
Date: Tue Oct 15 2013 - 14:14:10 EST


On Tue, Oct 15 2013, Jeff Moyer wrote:
> Hi, Jens,
>
> blk_mq_update_queue_map does this:
>
> for_each_possible_cpu(i) {
> if (!cpu_online(i)) {
> map[i] = 0;
> continue;
> }
>
> ...
> first_sibling = get_first_sibling(i);
> if (first_sibling == i) {
> map[i] = cpu_to_queue_index(nr_uniq_cpus, nr_queues,
> queue);
> queue++;
> } else
> map[i] = map[first_sibling];
>
> This assumes that the first_sibling is listed before any other siblings,
> which I don't believe is true. I don't think you get any guaranteed
> ordering in that cpu_possible_mask.
>
> ... or did I miss something?

That's correct, it's assuming the first sibling is the lowest numbered
one. Are there cases where that would not be correct? I was sort of
assuming that was what "first" meant here.

--
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/