Commit b8eaa967 authored by Jacek Kalwas's avatar Jacek Kalwas Committed by Tomasz Zawadzki
Browse files

nvme: fix issue with io queue size



The quirk can only be applied when not exceeding mqes. Given codition
is not enough as DEFAULT_IO_QUEUE_SIZE can be equal mqes + 1. In such
case driver is unable to create io queues.

Signed-off-by: default avatarJacek Kalwas <jacek.kalwas@intel.com>
Change-Id: I72de37ee413788ffd3483e814eded21ea05997c9
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1456


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
parent ab23eb65
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -472,8 +472,9 @@ nvme_ctrlr_probe(const struct spdk_nvme_transport_id *trid,
			/* If the user specifically set an IO queue size different than the
			 * default, use that value.  Otherwise overwrite with the quirked value.
			 * This allows this quirk to be overridden when necessary.
			 * However, cap.mqes still needs to be respected.
			 */
			ctrlr->opts.io_queue_size = DEFAULT_IO_QUEUE_SIZE_FOR_QUIRK;
			ctrlr->opts.io_queue_size = spdk_min(DEFAULT_IO_QUEUE_SIZE_FOR_QUIRK, ctrlr->cap.bits.mqes + 1u);
		}

		nvme_qpair_set_state(ctrlr->adminq, NVME_QPAIR_ENABLED);