diff --git a/lib/nvme/nvme_qpair.c b/lib/nvme/nvme_qpair.c index 913730683..bd5e57336 100644 --- a/lib/nvme/nvme_qpair.c +++ b/lib/nvme/nvme_qpair.c @@ -625,8 +625,7 @@ _nvme_qpair_submit_request(struct spdk_nvme_qpair *qpair, struct nvme_request *r /* The controller is being reset - queue this request and * submit it later when the reset is completed. */ - STAILQ_INSERT_TAIL(&qpair->queued_req, req, stailq); - return 0; + return -EAGAIN; } if (spdk_likely(rc == 0)) { @@ -634,8 +633,7 @@ _nvme_qpair_submit_request(struct spdk_nvme_qpair *qpair, struct nvme_request *r } if (rc == -EAGAIN) { - STAILQ_INSERT_TAIL(&qpair->queued_req, req, stailq); - return 0; + return -EAGAIN; } error: @@ -650,7 +648,15 @@ error: int nvme_qpair_submit_request(struct spdk_nvme_qpair *qpair, struct nvme_request *req) { - return _nvme_qpair_submit_request(qpair, req); + int rc; + + rc = _nvme_qpair_submit_request(qpair, req); + if (rc == -EAGAIN) { + STAILQ_INSERT_TAIL(&qpair->queued_req, req, stailq); + rc = 0; + } + + return rc; } void