summaryrefslogtreecommitdiffstats
path: root/drivers/block/nvme.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/block/nvme.c')
-rw-r--r--drivers/block/nvme.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/block/nvme.c b/drivers/block/nvme.c
index 8d3c0b7..f94f173 100644
--- a/drivers/block/nvme.c
+++ b/drivers/block/nvme.c
@@ -221,12 +221,7 @@ static void cancel_cmdid_data(struct nvme_queue *nvmeq, int cmdid)
static struct nvme_queue *get_nvmeq(struct nvme_ns *ns)
{
- int qid, cpu = get_cpu();
- if (cpu < ns->dev->queue_count)
- qid = cpu + 1;
- else
- qid = (cpu % rounddown_pow_of_two(ns->dev->queue_count)) + 1;
- return ns->dev->queues[qid];
+ return ns->dev->queues[get_cpu() + 1];
}
static void put_nvmeq(struct nvme_queue *nvmeq)
@@ -1316,6 +1311,11 @@ static int __devinit nvme_setup_io_queues(struct nvme_dev *dev)
dev->queue_count++;
}
+ for (; i < num_possible_cpus(); i++) {
+ int target = i % rounddown_pow_of_two(dev->queue_count - 1);
+ dev->queues[i + 1] = dev->queues[target + 1];
+ }
+
return 0;
}
OpenPOWER on IntegriCloud