diff --git a/lib/nvme/nvme.c b/lib/nvme/nvme.c index 141df4819..d8b88cef5 100644 --- a/lib/nvme/nvme.c +++ b/lib/nvme/nvme.c @@ -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);