From 0d8f86f842efeb9972e9c06650626f372a08a29c Mon Sep 17 00:00:00 2001 From: Seth Howell Date: Thu, 16 Jul 2020 16:39:37 -0700 Subject: [PATCH] lib/nvme: don't submit request if qpair is disconnected. This becomes a problem when the qpair is reconnected. Signed-off-by: Seth Howell Change-Id: I6677b396cf766684a4891ffbee93aa3e4e83374d Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3391 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- lib/nvme/nvme_qpair.c | 4 ++++ test/unit/lib/nvme/nvme_qpair.c/nvme_qpair_ut.c | 1 + 2 files changed, 5 insertions(+) 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);