From 208fbb675cb20346fd1be00b8b640b4e9e409eb1 Mon Sep 17 00:00:00 2001 From: Seth Howell Date: Fri, 1 Nov 2019 15:28:58 -0700 Subject: [PATCH] nvme_rdma: more cm_event validation to a helper function. This step is going to become more involved, so it's best to keep it in a separate function entirely. Change-Id: Iefa9860420edf28e858c4ed8aa932985c686cfd9 Signed-off-by: Seth Howell Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/473060 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Shuhei Matsumoto Reviewed-by: Jim Harris --- lib/nvme/nvme_rdma.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/lib/nvme/nvme_rdma.c b/lib/nvme/nvme_rdma.c index 8ad3ffd0f..ceea974b0 100644 --- a/lib/nvme/nvme_rdma.c +++ b/lib/nvme/nvme_rdma.c @@ -352,6 +352,23 @@ nvme_rdma_poll_events(struct nvme_rdma_ctrlr *rctrlr) } } +static int +nvme_rdma_validate_cm_event(enum rdma_cm_event_type expected_evt_type, + struct rdma_cm_event *reaped_evt) +{ + int rc = -EBADMSG; + + if (expected_evt_type == reaped_evt->event) { + return 0; + } + + SPDK_ERRLOG("Expected %s but received %s (%d) from CM event channel (status = %d)\n", + nvme_rdma_cm_event_str_get(expected_evt_type), + nvme_rdma_cm_event_str_get(reaped_evt->event), reaped_evt->event, + reaped_evt->status); + return rc; +} + static int nvme_rdma_process_event(struct nvme_rdma_qpair *rqpair, struct rdma_event_channel *channel, @@ -385,13 +402,7 @@ nvme_rdma_process_event(struct nvme_rdma_qpair *rqpair, return -EADDRNOTAVAIL; } - if (rqpair->evt->event != evt) { - SPDK_ERRLOG("Expected %s but received %s (%d) from CM event channel (status = %d)\n", - nvme_rdma_cm_event_str_get(evt), - nvme_rdma_cm_event_str_get(rqpair->evt->event), rqpair->evt->event, - rqpair->evt->status); - rc = -EBADMSG; - } + rc = nvme_rdma_validate_cm_event(evt, rqpair->evt); rc2 = nvme_rdma_qpair_process_cm_event(rqpair); /* bad message takes precedence over the other error codes from processing the event. */