Commit 47ae3957 authored by Ziye Yang's avatar Ziye Yang Committed by Daniel Verkamp
Browse files

nvme/rdma: Invoke rdma_ack_cm_event in exceptional cases



In our previous code, we did not ack the event in
exceptional cases when we get a event via rdma_get_cm_event.
Thus, the code may block with in this statement:
rdma_destroy_id(rqpair->cm_id);
in some exceptiaonal cases. And this patch will solve this
issue.

Change-Id: Iddb6fb5356a5ee0ed04e261a040ba53042fca302
Signed-off-by: default avatarZiye Yang <ziye.yang@intel.com>
parent 5f3e922a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -191,6 +191,7 @@ nvme_rdma_get_event(struct rdma_event_channel *channel,
	if (event->event != evt) {
		SPDK_ERRLOG("Received event %d from CM event channel, but expected event %d\n",
			    event->event, evt);
		rdma_ack_cm_event(event);
		return NULL;
	}

@@ -622,6 +623,7 @@ nvme_rdma_connect(struct nvme_rdma_qpair *rqpair)

	accept_data = (struct spdk_nvmf_rdma_accept_private_data *)event->param.conn.private_data;
	if (accept_data == NULL) {
		rdma_ack_cm_event(event);
		SPDK_ERRLOG("NVMe-oF target did not return accept data\n");
		return -1;
	}