Commit cf6431e8 authored by Kaiqi Chen's avatar Kaiqi Chen Committed by Tomasz Zawadzki
Browse files

nvmf/rdma: improve NULL cm_id and listen_id handling in qpair trid getters



cm_id might be set to NULL during nvmf_rdma_qpair_initialize, this
patch refines nvmf_rdma_qpair_get_peer_trid() and
nvmf_rdma_qpair_get_local_trid() to gracefully return -1 when cm_id is
NULL. And listen_id will never be set to NULL after qpair is created,
so an assert is used in nvmf_rdma_qpair_get_listen_trid() to check
whether the listen_id is NULL.

Change-Id: Idabf131ef9faf1e9462ca3345691178d5bd7e2b8
Signed-off-by: default avatarKaiqi Chen <kaiqi.chen@smartx.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/26350


Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Reviewed-by: default avatarKonrad Sztyber <ksztyber@nvidia.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Reviewed-by: default avatarChangpeng Liu <changpeliu@tencent.com>
Community-CI: Mellanox Build Bot
parent db005bf3
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -5028,6 +5028,11 @@ nvmf_rdma_qpair_get_peer_trid(struct spdk_nvmf_qpair *qpair,

	rqpair = SPDK_CONTAINEROF(qpair, struct spdk_nvmf_rdma_qpair, qpair);

	if (rqpair->cm_id == NULL) {
		SPDK_WARNLOG("cm_id is NULL for qpair %p\n", qpair);
		return -1;
	}

	return nvmf_rdma_trid_from_cm_id(rqpair->cm_id, trid, true);
}

@@ -5039,6 +5044,11 @@ nvmf_rdma_qpair_get_local_trid(struct spdk_nvmf_qpair *qpair,

	rqpair = SPDK_CONTAINEROF(qpair, struct spdk_nvmf_rdma_qpair, qpair);

	if (rqpair->cm_id == NULL) {
		SPDK_WARNLOG("cm_id is NULL for qpair %p\n", qpair);
		return -1;
	}

	return nvmf_rdma_trid_from_cm_id(rqpair->cm_id, trid, false);
}

@@ -5050,6 +5060,11 @@ nvmf_rdma_qpair_get_listen_trid(struct spdk_nvmf_qpair *qpair,

	rqpair = SPDK_CONTAINEROF(qpair, struct spdk_nvmf_rdma_qpair, qpair);

	if (rqpair->listen_id == NULL) {
		SPDK_ERRLOG("listen_id is NULL for qpair %p\n", qpair);
		assert(false);
	}

	return nvmf_rdma_trid_from_cm_id(rqpair->listen_id, trid, false);
}