test/nvme_reserve: allocate IO queue pair for supported controllers

Move the IO queue pair allocation after checking the support feature
bit.

Change-Id: Ie8c5f20cddacb669b093b05dcf911f01cdb1413e
Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5909
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: <dongx.yi@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
Changpeng Liu 2021-01-14 00:20:34 -05:00 committed by Tomasz Zawadzki
parent df2c932e09
commit 7fdf829cd7

View File

@ -350,10 +350,10 @@ reservation_ns_release(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qp
} }
static int static int
reserve_controller(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair, reserve_controller(struct spdk_nvme_ctrlr *ctrlr, const struct spdk_pci_addr *pci_addr)
const struct spdk_pci_addr *pci_addr)
{ {
const struct spdk_nvme_ctrlr_data *cdata; const struct spdk_nvme_ctrlr_data *cdata;
struct spdk_nvme_qpair *qpair;
int ret; int ret;
cdata = spdk_nvme_ctrlr_get_data(ctrlr); cdata = spdk_nvme_ctrlr_get_data(ctrlr);
@ -370,14 +370,20 @@ reserve_controller(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair,
return 0; return 0;
} }
qpair = spdk_nvme_ctrlr_alloc_io_qpair(ctrlr, NULL, 0);
if (!qpair) {
fprintf(stderr, "spdk_nvme_ctrlr_alloc_io_qpair() failed\n");
return -EIO;
}
ret = set_host_identifier(ctrlr); ret = set_host_identifier(ctrlr);
if (ret) { if (ret) {
return ret; goto out;
} }
ret = get_host_identifier(ctrlr); ret = get_host_identifier(ctrlr);
if (ret) { if (ret) {
return ret; goto out;
} }
/* tested 1 namespace */ /* tested 1 namespace */
@ -387,6 +393,8 @@ reserve_controller(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair,
ret += reservation_ns_register(ctrlr, qpair, 1, 0); ret += reservation_ns_register(ctrlr, qpair, 1, 0);
ret += reservation_ns_report(ctrlr, qpair, 1); ret += reservation_ns_report(ctrlr, qpair, 1);
out:
spdk_nvme_ctrlr_free_io_qpair(qpair);
return ret; return ret;
} }
@ -431,16 +439,7 @@ int main(int argc, char **argv)
} }
foreach_dev(iter) { foreach_dev(iter) {
struct spdk_nvme_qpair *qpair; ret = reserve_controller(iter->ctrlr, &iter->pci_addr);
qpair = spdk_nvme_ctrlr_alloc_io_qpair(iter->ctrlr, NULL, 0);
if (!qpair) {
fprintf(stderr, "spdk_nvme_ctrlr_alloc_io_qpair() failed\n");
ret = 1;
} else {
ret = reserve_controller(iter->ctrlr, qpair, &iter->pci_addr);
}
if (ret) { if (ret) {
break; break;
} }