nvme-pci: don't create a read hctx mapping without read queues
Only request an IRQ mapping for read queues if at least one read queue is being allocted, as nvme_pci_map_queues() will later on ignore the unnecessary mapping request should nvme_dev_add() request such an IRQ mapping even though no read queues are being allocated. However, nvme_dev_add() can avoid making the request by checking the number of read queues without assuming. This would bring it more in line with nvme_setup_irqs() and nvme_calc_irq_sets(). Signed-off-by: Alan Mikhak <alan.mikhak@sifive.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
4fe06923f5
commit
0298d54352
|
@ -2250,7 +2250,9 @@ static int nvme_dev_add(struct nvme_dev *dev)
|
||||||
if (!dev->ctrl.tagset) {
|
if (!dev->ctrl.tagset) {
|
||||||
dev->tagset.ops = &nvme_mq_ops;
|
dev->tagset.ops = &nvme_mq_ops;
|
||||||
dev->tagset.nr_hw_queues = dev->online_queues - 1;
|
dev->tagset.nr_hw_queues = dev->online_queues - 1;
|
||||||
dev->tagset.nr_maps = 2; /* default + read */
|
dev->tagset.nr_maps = 1; /* default */
|
||||||
|
if (dev->io_queues[HCTX_TYPE_READ])
|
||||||
|
dev->tagset.nr_maps++;
|
||||||
if (dev->io_queues[HCTX_TYPE_POLL])
|
if (dev->io_queues[HCTX_TYPE_POLL])
|
||||||
dev->tagset.nr_maps++;
|
dev->tagset.nr_maps++;
|
||||||
dev->tagset.timeout = NVME_IO_TIMEOUT;
|
dev->tagset.timeout = NVME_IO_TIMEOUT;
|
||||||
|
|
Loading…
Reference in New Issue