Messages in this thread | | | Date | Tue, 15 Oct 2013 12:14:03 -0600 | From | Jens Axboe <> | Subject | Re: blk_mq_update_queue_map makes an (invalid?) assumption about cpu ordering |
| |
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
| |