NVMe: Allocate queues only for online cpus
authorKeith Busch <keith.busch@intel.com>
Fri, 13 May 2016 18:38:09 +0000 (12:38 -0600)
committerJens Axboe <axboe@fb.com>
Tue, 17 May 2016 23:14:21 +0000 (17:14 -0600)
The driver previously requested allocating queues for the total possible
number of CPUs so that blk-mq could rebalance these if CPUs were added
after initialization. The number of hardware contexts can now be changed
at runtime, so we only need to allocate the number of online queues
since we can add more later.

Suggested-by: Jeff Lien <jeff.lien@hgst.com>
Signed-off-by: Keith Busch <keith.busch@intel.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/nvme/host/pci.c

index 0f093f14d3482394630b66c8586da5beb455d8c4..3c7b625a5e5675d351ececadea25435a5c1c0c2b 100644 (file)
@@ -1394,7 +1394,7 @@ static int nvme_setup_io_queues(struct nvme_dev *dev)
        struct pci_dev *pdev = to_pci_dev(dev->dev);
        int result, i, vecs, nr_io_queues, size;
 
-       nr_io_queues = num_possible_cpus();
+       nr_io_queues = num_online_cpus();
        result = nvme_set_queue_count(&dev->ctrl, &nr_io_queues);
        if (result < 0)
                return result;