nvmf/vfio_user: use configurable max_qpairs_per_ctrlr
User may configure opts.max_qpairs_per_ctrlr, so use opts.max_qpairs_per_ctrlr instead of using fixed default NVMF_VFIO_USER_DEFAULT_MAX_QPAIRS_PER_CTRLR. Also do not allow users to configure max_qpairs_per_ctrl > NVMF_VFIO_USER_DEFAULT_MAX_QPAIRS_PER_CTRLR. Signed-off-by: Swapnil Ingle <swapnil.ingle@nutanix.com> Change-Id: Id9f1f796559f3bb8b2d3f5031606050470681b99 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9994 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: John Levon <levon@movementarian.org> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
This commit is contained in:
parent
9cb78e1a46
commit
ed21f81ff1
@ -555,6 +555,12 @@ nvmf_vfio_user_create(struct spdk_nvmf_transport_opts *opts)
|
||||
struct nvmf_vfio_user_transport *vu_transport;
|
||||
int err;
|
||||
|
||||
if (opts->max_qpairs_per_ctrlr > NVMF_VFIO_USER_DEFAULT_MAX_QPAIRS_PER_CTRLR) {
|
||||
SPDK_ERRLOG("Invalid max_qpairs_per_ctrlr=%d, supported max_qpairs_per_ctrlr=%d\n",
|
||||
opts->max_qpairs_per_ctrlr, NVMF_VFIO_USER_DEFAULT_MAX_QPAIRS_PER_CTRLR);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
vu_transport = calloc(1, sizeof(*vu_transport));
|
||||
if (vu_transport == NULL) {
|
||||
SPDK_ERRLOG("Transport alloc fail: %m\n");
|
||||
@ -1098,14 +1104,15 @@ handle_create_io_q(struct nvmf_vfio_user_ctrlr *ctrlr,
|
||||
int err = 0;
|
||||
struct nvmf_vfio_user_qpair *vu_qpair;
|
||||
struct nvme_q *io_q;
|
||||
struct nvmf_vfio_user_transport *vu_transport = ctrlr->transport;
|
||||
|
||||
assert(ctrlr != NULL);
|
||||
assert(cmd != NULL);
|
||||
|
||||
qid = cmd->cdw10_bits.create_io_q.qid;
|
||||
if (qid == 0 || qid >= NVMF_VFIO_USER_DEFAULT_MAX_QPAIRS_PER_CTRLR) {
|
||||
if (qid == 0 || qid >= vu_transport->transport.opts.max_qpairs_per_ctrlr) {
|
||||
SPDK_ERRLOG("%s: invalid QID=%d, max=%d\n", ctrlr_id(ctrlr),
|
||||
qid, NVMF_VFIO_USER_DEFAULT_MAX_QPAIRS_PER_CTRLR);
|
||||
qid, vu_transport->transport.opts.max_qpairs_per_ctrlr);
|
||||
sct = SPDK_NVME_SCT_COMMAND_SPECIFIC;
|
||||
sc = SPDK_NVME_SC_INVALID_QUEUE_IDENTIFIER;
|
||||
goto out;
|
||||
|
Loading…
Reference in New Issue
Block a user