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: Ziye Yang <ziye.yang@intel.com>
This commit is contained in:
parent
5f3e922a6a
commit
47ae3957eb
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user