diff options
author | Jens Axboe <axboe@fb.com> | 2014-05-27 12:06:53 -0600 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2014-05-27 12:06:53 -0600 |
commit | f14bbe77a96bb979dc539d8308ee18a9363a544f (patch) | |
tree | 38ae39ea9002bb126aa259be0e81ffd7b32fa0d9 /block/blk-mq-cpumap.c | |
parent | 3d2936f457a847d9d88a9cc127e0eb7a0ebba0ff (diff) |
blk-mq: pass in suggested NUMA node to ->alloc_hctx()
Drivers currently have to figure this out on their own, and they
are missing information to do it properly. The ones that did
attempt to do it, do it wrong.
So just pass in the suggested node directly to the alloc
function.
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block/blk-mq-cpumap.c')
-rw-r--r-- | block/blk-mq-cpumap.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/block/blk-mq-cpumap.c b/block/blk-mq-cpumap.c index 5d0f93cf358..0daacb927be 100644 --- a/block/blk-mq-cpumap.c +++ b/block/blk-mq-cpumap.c @@ -96,3 +96,19 @@ unsigned int *blk_mq_make_queue_map(struct blk_mq_tag_set *set) kfree(map); return NULL; } + +/* + * We have no quick way of doing reverse lookups. This is only used at + * queue init time, so runtime isn't important. + */ +int blk_mq_hw_queue_to_node(unsigned int *mq_map, unsigned int index) +{ + int i; + + for_each_possible_cpu(i) { + if (index == mq_map[i]) + return cpu_to_node(i); + } + + return NUMA_NO_NODE; +} |