diff --git a/lib/nvme/nvme_qpair.c b/lib/nvme/nvme_qpair.c index a024b3344..5a2c946fe 100644 --- a/lib/nvme/nvme_qpair.c +++ b/lib/nvme/nvme_qpair.c @@ -454,7 +454,7 @@ spdk_nvme_qpair_process_completions(struct spdk_nvme_qpair *qpair, uint32_t max_ ret = nvme_transport_qpair_process_completions(qpair, max_completions); if (ret < 0) { SPDK_ERRLOG("CQ error, abort requests after transport retry counter exceeded\n"); - qpair->ctrlr->is_failed = true; + nvme_ctrlr_fail(qpair->ctrlr, false); } qpair->in_completion_context = 0; if (qpair->delete_after_completion_context) { 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 48a3a76e9..3adcc76b5 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 @@ -48,6 +48,15 @@ struct nvme_driver _g_nvme_driver = { .lock = PTHREAD_MUTEX_INITIALIZER, }; +void +nvme_ctrlr_fail(struct spdk_nvme_ctrlr *ctrlr, bool hot_remove) +{ + if (hot_remove) { + ctrlr->is_removed = true; + } + ctrlr->is_failed = true; +} + void nvme_transport_qpair_abort_reqs(struct spdk_nvme_qpair *qpair, uint32_t dnr) {