nvme: Complete pending register operations first
Fully asynchronous ctrlr detach (b6ecc3729
) introduce a register
operation state machine that waits for operation to complete. When
controller failed to initialize, `nvme_ctrlr_fail` set qpair state to
`DISCONNECTED` immediately, causing qpair process completions to
never complete register operations therefore prevent async detach exit.
Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Change-Id: I205c5157b8ea7b4535f98ff4052414310e421446
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12858
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
9db37f3cae
commit
14ecc7787d
@ -695,6 +695,11 @@ spdk_nvme_qpair_process_completions(struct spdk_nvme_qpair *qpair, uint32_t max_
|
|||||||
int32_t ret;
|
int32_t ret;
|
||||||
struct nvme_request *req, *tmp;
|
struct nvme_request *req, *tmp;
|
||||||
|
|
||||||
|
/* Complete any pending register operations */
|
||||||
|
if (nvme_qpair_is_admin_queue(qpair)) {
|
||||||
|
nvme_complete_register_operations(qpair);
|
||||||
|
}
|
||||||
|
|
||||||
if (spdk_unlikely(qpair->ctrlr->is_failed &&
|
if (spdk_unlikely(qpair->ctrlr->is_failed &&
|
||||||
nvme_qpair_get_state(qpair) != NVME_QPAIR_DISCONNECTING)) {
|
nvme_qpair_get_state(qpair) != NVME_QPAIR_DISCONNECTING)) {
|
||||||
if (qpair->ctrlr->is_removed) {
|
if (qpair->ctrlr->is_removed) {
|
||||||
@ -758,11 +763,6 @@ spdk_nvme_qpair_process_completions(struct spdk_nvme_qpair *qpair, uint32_t max_
|
|||||||
nvme_qpair_resubmit_requests(qpair, ret);
|
nvme_qpair_resubmit_requests(qpair, ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Complete any pending register operations */
|
|
||||||
if (nvme_qpair_is_admin_queue(qpair)) {
|
|
||||||
nvme_complete_register_operations(qpair);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user