diff --git a/lib/nvme/nvme_qpair.c b/lib/nvme/nvme_qpair.c index a3fdc21699f..083591c6a0d 100644 --- a/lib/nvme/nvme_qpair.c +++ b/lib/nvme/nvme_qpair.c @@ -826,6 +826,10 @@ _nvme_qpair_submit_request(struct spdk_nvme_qpair *qpair, struct nvme_request *r nvme_qpair_check_enabled(qpair); + if (nvme_qpair_get_state(qpair) == NVME_QPAIR_DISCONNECTED) { + return -ENXIO; + } + if (req->num_children) { /* * This is a split (parent) request. Submit all of the children but not the parent diff --git a/test/unit/lib/nvme/nvme_qpair.c/nvme_qpair_ut.c b/test/unit/lib/nvme/nvme_qpair.c/nvme_qpair_ut.c index e34c7041334..3965906b7de 100644 --- a/test/unit/lib/nvme/nvme_qpair.c/nvme_qpair_ut.c +++ b/test/unit/lib/nvme/nvme_qpair.c/nvme_qpair_ut.c @@ -111,6 +111,7 @@ test3(void) struct nvme_request *req; struct spdk_nvme_ctrlr ctrlr = {}; + qpair.state = NVME_QPAIR_ENABLED; prepare_submit_request_test(&qpair, &ctrlr); req = nvme_allocate_request_null(&qpair, expected_success_callback, NULL);