nvme: create nvme_qpair_abort_queued_reqs function

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: I12b4081d3cf57bda8b01911c25a9c13102a1115d

Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/453741
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ziye Yang <ziye.yang@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Jim Harris 2019-05-08 10:14:35 -07:00
parent 859f598b69
commit a3945e8ec9

View File

@ -576,17 +576,16 @@ nvme_qpair_submit_request(struct spdk_nvme_qpair *qpair, struct nvme_request *re
} }
static void static void
_nvme_io_qpair_enable(struct spdk_nvme_qpair *qpair) nvme_qpair_abort_queued_reqs(struct spdk_nvme_qpair *qpair, uint32_t dnr)
{ {
struct nvme_request *req; struct nvme_request *req;
/* Manually abort each queued I/O. */
while (!STAILQ_EMPTY(&qpair->queued_req)) { while (!STAILQ_EMPTY(&qpair->queued_req)) {
req = STAILQ_FIRST(&qpair->queued_req); req = STAILQ_FIRST(&qpair->queued_req);
STAILQ_REMOVE_HEAD(&qpair->queued_req, stailq); STAILQ_REMOVE_HEAD(&qpair->queued_req, stailq);
SPDK_ERRLOG("aborting queued i/o\n"); SPDK_ERRLOG("aborting queued i/o\n");
nvme_qpair_manual_complete_request(qpair, req, SPDK_NVME_SCT_GENERIC, nvme_qpair_manual_complete_request(qpair, req, SPDK_NVME_SCT_GENERIC,
SPDK_NVME_SC_ABORTED_BY_REQUEST, 0, true); SPDK_NVME_SC_ABORTED_BY_REQUEST, dnr, true);
} }
} }
@ -594,7 +593,7 @@ void
nvme_qpair_enable(struct spdk_nvme_qpair *qpair) nvme_qpair_enable(struct spdk_nvme_qpair *qpair)
{ {
if (nvme_qpair_is_io_queue(qpair)) { if (nvme_qpair_is_io_queue(qpair)) {
_nvme_io_qpair_enable(qpair); nvme_qpair_abort_queued_reqs(qpair, 0);
} }
qpair->is_enabled = true; qpair->is_enabled = true;
@ -624,16 +623,7 @@ nvme_qpair_disable(struct spdk_nvme_qpair *qpair)
static void static void
nvme_qpair_abort_reqs(struct spdk_nvme_qpair *qpair, uint32_t dnr) nvme_qpair_abort_reqs(struct spdk_nvme_qpair *qpair, uint32_t dnr)
{ {
struct nvme_request *req; nvme_qpair_abort_queued_reqs(qpair, dnr);
while (!STAILQ_EMPTY(&qpair->queued_req)) {
req = STAILQ_FIRST(&qpair->queued_req);
STAILQ_REMOVE_HEAD(&qpair->queued_req, stailq);
SPDK_ERRLOG("failing queued i/o\n");
nvme_qpair_manual_complete_request(qpair, req, SPDK_NVME_SCT_GENERIC,
SPDK_NVME_SC_ABORTED_BY_REQUEST, dnr, true);
}
nvme_transport_qpair_abort_reqs(qpair, dnr); nvme_transport_qpair_abort_reqs(qpair, dnr);
} }