nvme: add poll group handling to qpair path.
Signed-off-by: Seth Howell <seth.howell@intel.com> Change-Id: I9116cdcb5bbeb16ee74decee5586bda9a42090aa Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/633 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Broadcom CI Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
ccf0fd4e39
commit
b9a187977d
@ -500,7 +500,6 @@ nvme_ctrlr_disconnect_qpair(struct spdk_nvme_qpair *qpair)
|
||||
struct spdk_nvme_ctrlr *ctrlr = qpair->ctrlr;
|
||||
|
||||
assert(ctrlr != NULL);
|
||||
|
||||
nvme_robust_mutex_lock(&ctrlr->ctrlr_lock);
|
||||
nvme_transport_ctrlr_disconnect_qpair(ctrlr, qpair);
|
||||
nvme_robust_mutex_unlock(&ctrlr->ctrlr_lock);
|
||||
@ -528,6 +527,10 @@ spdk_nvme_ctrlr_free_io_qpair(struct spdk_nvme_qpair *qpair)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (qpair->poll_group) {
|
||||
spdk_nvme_poll_group_remove(qpair->poll_group->group, qpair);
|
||||
}
|
||||
|
||||
nvme_robust_mutex_lock(&ctrlr->ctrlr_lock);
|
||||
|
||||
nvme_ctrlr_proc_remove_io_qpair(qpair);
|
||||
|
@ -275,13 +275,24 @@ nvme_transport_ctrlr_connect_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nv
|
||||
}
|
||||
nvme_qpair_set_state(qpair, NVME_QPAIR_CONNECTING);
|
||||
rc = transport->ops.ctrlr_connect_qpair(ctrlr, qpair);
|
||||
if (rc == 0) {
|
||||
nvme_qpair_set_state(qpair, NVME_QPAIR_CONNECTED);
|
||||
qpair->transport_failure_reason = SPDK_NVME_QPAIR_FAILURE_NONE;
|
||||
} else {
|
||||
nvme_qpair_set_state(qpair, NVME_QPAIR_DISABLED);
|
||||
if (rc != 0) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
nvme_qpair_set_state(qpair, NVME_QPAIR_CONNECTED);
|
||||
if (qpair->poll_group) {
|
||||
rc = nvme_poll_group_activate_qpair(qpair);
|
||||
if (rc) {
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
|
||||
qpair->transport_failure_reason = SPDK_NVME_QPAIR_FAILURE_NONE;
|
||||
return rc;
|
||||
|
||||
err:
|
||||
nvme_transport_ctrlr_disconnect_qpair(ctrlr, qpair);
|
||||
nvme_qpair_set_state(qpair, NVME_QPAIR_DISABLED);
|
||||
return rc;
|
||||
}
|
||||
|
||||
@ -291,6 +302,9 @@ nvme_transport_ctrlr_disconnect_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk
|
||||
const struct spdk_nvme_transport *transport = nvme_get_transport(ctrlr->trid.trstring);
|
||||
|
||||
assert(transport != NULL);
|
||||
if (qpair->poll_group) {
|
||||
nvme_poll_group_deactivate_qpair(qpair);
|
||||
}
|
||||
transport->ops.ctrlr_disconnect_qpair(ctrlr, qpair);
|
||||
}
|
||||
|
||||
|
@ -67,6 +67,8 @@ DEFINE_STUB(nvme_ctrlr_cmd_set_host_id, int,
|
||||
(struct spdk_nvme_ctrlr *ctrlr, void *host_id, uint32_t host_id_size,
|
||||
spdk_nvme_cmd_cb cb_fn, void *cb_arg), 0);
|
||||
DEFINE_STUB_V(nvme_ns_set_identify_data, (struct spdk_nvme_ns *ns));
|
||||
DEFINE_STUB(spdk_nvme_poll_group_remove, int, (struct spdk_nvme_poll_group *group,
|
||||
struct spdk_nvme_qpair *qpair), 0);
|
||||
|
||||
struct spdk_nvme_ctrlr *nvme_transport_ctrlr_construct(const struct spdk_nvme_transport_id *trid,
|
||||
const struct spdk_nvme_ctrlr_opts *opts,
|
||||
|
Loading…
x
Reference in New Issue
Block a user