diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c index 04958338b..44be95050 100644 --- a/lib/nvme/nvme_ctrlr.c +++ b/lib/nvme/nvme_ctrlr.c @@ -619,13 +619,6 @@ spdk_nvme_ctrlr_free_io_qpair(struct spdk_nvme_qpair *qpair) return 0; } - if (qpair->poll_group && qpair->poll_group->in_completion_context) { - /* Same as above, but in a poll group. */ - qpair->poll_group->num_qpairs_to_delete++; - qpair->delete_after_completion_context = 1; - return 0; - } - nvme_transport_ctrlr_disconnect_qpair(ctrlr, qpair); if (qpair->poll_group) { diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index 4400ae302..e94b6968b 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -502,8 +502,6 @@ struct spdk_nvme_transport_poll_group { STAILQ_HEAD(, spdk_nvme_qpair) connected_qpairs; STAILQ_HEAD(, spdk_nvme_qpair) disconnected_qpairs; STAILQ_ENTRY(spdk_nvme_transport_poll_group) link; - bool in_completion_context; - uint64_t num_qpairs_to_delete; }; struct spdk_nvme_ns { diff --git a/lib/nvme/nvme_transport.c b/lib/nvme/nvme_transport.c index b10a61863..925d9b628 100644 --- a/lib/nvme/nvme_transport.c +++ b/lib/nvme/nvme_transport.c @@ -707,39 +707,8 @@ int64_t nvme_transport_poll_group_process_completions(struct spdk_nvme_transport_poll_group *tgroup, uint32_t completions_per_qpair, spdk_nvme_disconnected_qpair_cb disconnected_qpair_cb) { - struct spdk_nvme_qpair *qpair; - int64_t rc; - - tgroup->in_completion_context = true; - rc = tgroup->transport->ops.poll_group_process_completions(tgroup, completions_per_qpair, + return tgroup->transport->ops.poll_group_process_completions(tgroup, completions_per_qpair, disconnected_qpair_cb); - tgroup->in_completion_context = false; - - if (spdk_unlikely(tgroup->num_qpairs_to_delete > 0)) { - /* deleted qpairs are more likely to be in the disconnected qpairs list. */ - STAILQ_FOREACH(qpair, &tgroup->disconnected_qpairs, poll_group_stailq) { - if (spdk_unlikely(qpair->delete_after_completion_context)) { - spdk_nvme_ctrlr_free_io_qpair(qpair); - if (--tgroup->num_qpairs_to_delete == 0) { - return rc; - } - } - } - - STAILQ_FOREACH(qpair, &tgroup->connected_qpairs, poll_group_stailq) { - if (spdk_unlikely(qpair->delete_after_completion_context)) { - spdk_nvme_ctrlr_free_io_qpair(qpair); - if (--tgroup->num_qpairs_to_delete == 0) { - return rc; - } - } - } - /* Just in case. */ - SPDK_DEBUGLOG(nvme, "Mismatch between qpairs to delete and poll group number.\n"); - tgroup->num_qpairs_to_delete = 0; - } - - return rc; } int diff --git a/test/unit/lib/bdev/nvme/bdev_nvme.c/bdev_nvme_ut.c b/test/unit/lib/bdev/nvme/bdev_nvme.c/bdev_nvme_ut.c index ec9bbf891..6faf059f5 100644 --- a/test/unit/lib/bdev/nvme/bdev_nvme.c/bdev_nvme_ut.c +++ b/test/unit/lib/bdev/nvme/bdev_nvme.c/bdev_nvme_ut.c @@ -261,8 +261,6 @@ struct spdk_nvme_poll_group { struct spdk_nvme_accel_fn_table accel_fn_table; TAILQ_HEAD(, spdk_nvme_qpair) connected_qpairs; TAILQ_HEAD(, spdk_nvme_qpair) disconnected_qpairs; - bool in_completion_context; - uint64_t num_qpairs_to_delete; }; struct spdk_nvme_probe_ctx { @@ -746,12 +744,6 @@ spdk_nvme_ctrlr_free_io_qpair(struct spdk_nvme_qpair *qpair) return 0; } - if (qpair->poll_group && qpair->poll_group->in_completion_context) { - qpair->poll_group->num_qpairs_to_delete++; - qpair->delete_after_completion_context = true; - return 0; - } - spdk_nvme_ctrlr_disconnect_io_qpair(qpair); if (qpair->poll_group != NULL) { @@ -1136,8 +1128,6 @@ spdk_nvme_poll_group_process_completions(struct spdk_nvme_poll_group *group, return -EINVAL; } - group->in_completion_context = true; - TAILQ_FOREACH_SAFE(qpair, &group->disconnected_qpairs, poll_group_tailq, tmp_qpair) { disconnected_qpair_cb(qpair, group->ctx); } @@ -1158,28 +1148,6 @@ spdk_nvme_poll_group_process_completions(struct spdk_nvme_poll_group *group, } } - group->in_completion_context = false; - - if (group->num_qpairs_to_delete > 0) { - TAILQ_FOREACH_SAFE(qpair, &group->disconnected_qpairs, poll_group_tailq, tmp_qpair) { - if (qpair->delete_after_completion_context) { - spdk_nvme_ctrlr_free_io_qpair(qpair); - CU_ASSERT(group->num_qpairs_to_delete > 0); - group->num_qpairs_to_delete--; - } - } - - TAILQ_FOREACH_SAFE(qpair, &group->connected_qpairs, poll_group_tailq, tmp_qpair) { - if (qpair->delete_after_completion_context) { - spdk_nvme_ctrlr_free_io_qpair(qpair); - CU_ASSERT(group->num_qpairs_to_delete > 0); - group->num_qpairs_to_delete--; - } - } - - CU_ASSERT(group->num_qpairs_to_delete == 0); - } - return error_reason ? error_reason : num_completions; }