diff --git a/lib/nvme/nvme_pcie.c b/lib/nvme/nvme_pcie.c index 5711e7b2d..14f563532 100644 --- a/lib/nvme/nvme_pcie.c +++ b/lib/nvme/nvme_pcie.c @@ -932,6 +932,8 @@ static struct spdk_nvme_ctrlr *nvme_pcie_ctrlr_construct(const struct spdk_nvme_ pctrlr->devhandle = devhandle; pctrlr->ctrlr.opts = *opts; pctrlr->ctrlr.trid = *trid; + pctrlr->ctrlr.opts.admin_queue_size = spdk_max(pctrlr->ctrlr.opts.admin_queue_size, + NVME_PCIE_MIN_ADMIN_QUEUE_SIZE); rc = nvme_ctrlr_construct(&pctrlr->ctrlr); if (rc != 0) { diff --git a/lib/nvme/nvme_pcie_internal.h b/lib/nvme/nvme_pcie_internal.h index 663cccf82..e3fb862fd 100644 --- a/lib/nvme/nvme_pcie_internal.h +++ b/lib/nvme/nvme_pcie_internal.h @@ -49,6 +49,9 @@ #define NVME_MAX_PRP_LIST_ENTRIES (503) +/* Minimum admin queue size */ +#define NVME_PCIE_MIN_ADMIN_QUEUE_SIZE (256) + /* PCIe transport extensions for spdk_nvme_ctrlr */ struct nvme_pcie_ctrlr { struct spdk_nvme_ctrlr ctrlr; diff --git a/lib/nvme/nvme_vfio_user.c b/lib/nvme/nvme_vfio_user.c index bdf52c534..721913413 100644 --- a/lib/nvme/nvme_vfio_user.c +++ b/lib/nvme/nvme_vfio_user.c @@ -239,6 +239,8 @@ static struct spdk_nvme_ctrlr * pctrlr->ctrlr.opts = *opts; pctrlr->ctrlr.trid = *trid; pctrlr->ctrlr.opts.use_cmb_sqs = false; + pctrlr->ctrlr.opts.admin_queue_size = spdk_max(pctrlr->ctrlr.opts.admin_queue_size, + NVME_PCIE_MIN_ADMIN_QUEUE_SIZE); ret = nvme_ctrlr_construct(&pctrlr->ctrlr); if (ret != 0) {