diff --git a/lib/nvme/nvme_rdma.c b/lib/nvme/nvme_rdma.c index 32bb0e0c5..b75e267a9 100644 --- a/lib/nvme/nvme_rdma.c +++ b/lib/nvme/nvme_rdma.c @@ -209,8 +209,6 @@ struct nvme_rdma_qpair { bool delay_cmd_submit; - bool poll_group_disconnect_in_progress; - uint32_t num_completions; /* Parallel arrays of response buffers + response SGLs of size num_entries */ @@ -2633,24 +2631,10 @@ nvme_rdma_poll_group_disconnect_qpair(struct spdk_nvme_qpair *qpair) struct nvme_rdma_qpair *rqpair = nvme_rdma_qpair(qpair); struct nvme_rdma_poll_group *group; struct nvme_rdma_destroyed_qpair *destroyed_qpair; - enum nvme_qpair_state state; - if (rqpair->poll_group_disconnect_in_progress) { - return -EINPROGRESS; - } - - rqpair->poll_group_disconnect_in_progress = true; - state = nvme_qpair_get_state(qpair); group = nvme_rdma_poll_group(qpair->poll_group); - rqpair->cq = NULL; - /* - * We want to guard against an endless recursive loop while making - * sure the qpair is disconnected before we disconnect it from the qpair. - */ - if (state > NVME_QPAIR_DISCONNECTING && state != NVME_QPAIR_DESTROYING) { - nvme_ctrlr_disconnect_qpair(qpair); - } + rqpair->cq = NULL; /* qpair has requests submitted to HW, need to wait for their completion. * Allocate a tracker and attach it to poll group */ @@ -2671,7 +2655,6 @@ nvme_rdma_poll_group_disconnect_qpair(struct spdk_nvme_qpair *qpair) rqpair->defer_deletion_to_pg = true; - rqpair->poll_group_disconnect_in_progress = false; return 0; } diff --git a/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c b/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c index 366904eea..253a82a1c 100644 --- a/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c +++ b/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c @@ -2,7 +2,7 @@ * BSD LICENSE * * Copyright (c) Intel Corporation. All rights reserved. - * Copyright (c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * Copyright (c) 2021, 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -1038,7 +1038,6 @@ test_nvme_rdma_poll_group_connect_disconnect_qpair(void) rc = nvme_rdma_poll_group_disconnect_qpair(&rqpair->qpair); CU_ASSERT(rc == 0); CU_ASSERT(rqpair->defer_deletion_to_pg == true); - CU_ASSERT(rqpair->poll_group_disconnect_in_progress == false); CU_ASSERT(rqpair->cq == NULL); CU_ASSERT(!STAILQ_EMPTY(&group.destroyed_qpairs)); @@ -1068,11 +1067,6 @@ test_nvme_rdma_poll_group_connect_disconnect_qpair(void) CU_ASSERT(rc == -EINVAL); CU_ASSERT(rqpair->cq == NULL); - /* Poll group disconnect in progress */ - rqpair->poll_group_disconnect_in_progress = true; - - rc = nvme_rdma_poll_group_disconnect_qpair(&rqpair->qpair); - CU_ASSERT(rc == -EINPROGRESS); free(rqpair); }