Commit f108a1f1 authored by Tomasz Zawadzki's avatar Tomasz Zawadzki Committed by Tomasz Zawadzki
Browse files

nvme/tcp: use TAILQ_ENTRY_*() instead of needs_poll



needs_poll bool value was used to quickly determine
when qpair should be placed on needs_poll list.

This can be acomplished in exact same way with tqe_prev
check on TAILQ or via recently added TAILQ_ENTRY_*()
macros.

Change-Id: I7423db35d646a35e4e62ae6d44206a44ea6ff9ad
Signed-off-by: default avatarTomasz Zawadzki <tomasz.zawadzki@nutanix.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/25999


Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Reviewed-by: default avatarJacek Kalwas <jacek.kalwas@nutanix.com>
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarKonrad Sztyber <ksztyber@nvidia.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
parent 1fc58c3b
Loading
Loading
Loading
Loading
+9 −15
Original line number Diff line number Diff line
@@ -109,7 +109,6 @@ struct nvme_tcp_qpair {
	enum nvme_tcp_qpair_state		state;

	TAILQ_ENTRY(nvme_tcp_qpair)		link;
	bool					needs_poll;

	uint64_t				icreq_timeout_tsc;

@@ -345,10 +344,9 @@ nvme_tcp_ctrlr_disconnect_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_
	int rc;
	struct nvme_tcp_poll_group *group;

	if (tqpair->needs_poll) {
	if (TAILQ_ENTRY_ENQUEUED(tqpair, link)) {
		group = nvme_tcp_poll_group(qpair->poll_group);
		TAILQ_REMOVE(&group->needs_poll, tqpair, link);
		tqpair->needs_poll = false;
		TAILQ_REMOVE_CLEAR(&group->needs_poll, tqpair, link);
	}

	rc = spdk_sock_close(&tqpair->sock);
@@ -439,7 +437,7 @@ nvme_tcp_cond_schedule_qpair_polling(struct nvme_tcp_qpair *tqpair)
{
	struct nvme_tcp_poll_group *pgroup;

	if (tqpair->needs_poll || !tqpair->qpair.poll_group) {
	if (TAILQ_ENTRY_ENQUEUED(tqpair, link) || !tqpair->qpair.poll_group) {
		return;
	}

@@ -451,7 +449,6 @@ nvme_tcp_cond_schedule_qpair_polling(struct nvme_tcp_qpair *tqpair)

	pgroup = nvme_tcp_poll_group(tqpair->qpair.poll_group);
	TAILQ_INSERT_TAIL(&pgroup->needs_poll, tqpair, link);
	tqpair->needs_poll = true;
}

static void
@@ -2163,9 +2160,8 @@ nvme_tcp_qpair_sock_cb(void *ctx, struct spdk_sock_group *group, struct spdk_soc
	int32_t num_completions;
	struct nvme_tcp_qpair *tqpair = nvme_tcp_qpair(qpair);

	if (tqpair->needs_poll) {
		TAILQ_REMOVE(&pgroup->needs_poll, tqpair, link);
		tqpair->needs_poll = false;
	if (TAILQ_ENTRY_ENQUEUED(tqpair, link)) {
		TAILQ_REMOVE_CLEAR(&pgroup->needs_poll, tqpair, link);
	}

	num_completions = spdk_nvme_qpair_process_completions(qpair, pgroup->completions_per_qpair);
@@ -2763,9 +2759,8 @@ nvme_tcp_poll_group_disconnect_qpair(struct spdk_nvme_qpair *qpair)
	struct nvme_tcp_poll_group *group = nvme_tcp_poll_group(qpair->poll_group);
	struct nvme_tcp_qpair *tqpair = nvme_tcp_qpair(qpair);

	if (tqpair->needs_poll) {
		TAILQ_REMOVE(&group->needs_poll, tqpair, link);
		tqpair->needs_poll = false;
	if (TAILQ_ENTRY_ENQUEUED(tqpair, link)) {
		TAILQ_REMOVE_CLEAR(&group->needs_poll, tqpair, link);
	}

	if (tqpair->sock && group->sock_group) {
@@ -2808,9 +2803,8 @@ nvme_tcp_poll_group_remove(struct spdk_nvme_transport_poll_group *tgroup,
	assert(tqpair->shared_stats == true);
	tqpair->stats = &g_dummy_stats;

	if (tqpair->needs_poll) {
		TAILQ_REMOVE(&group->needs_poll, tqpair, link);
		tqpair->needs_poll = false;
	if (TAILQ_ENTRY_ENQUEUED(tqpair, link)) {
		TAILQ_REMOVE_CLEAR(&group->needs_poll, tqpair, link);
	}

	return 0;
+1 −2
Original line number Diff line number Diff line
@@ -1489,7 +1489,6 @@ test_nvme_tcp_ctrlr_disconnect_qpair(void)
	qpair = &tqpair.qpair;
	qpair->poll_group = &tgroup.group;
	tqpair.sock = (struct spdk_sock *)0xDEADBEEF;
	tqpair.needs_poll = true;
	TAILQ_INIT(&tgroup.needs_poll);
	STAILQ_INIT(&tgroup.group.disconnected_qpairs);
	TAILQ_INIT(&tqpair.send_queue);
@@ -1500,7 +1499,7 @@ test_nvme_tcp_ctrlr_disconnect_qpair(void)

	nvme_tcp_ctrlr_disconnect_qpair(&ctrlr, qpair);

	CU_ASSERT(tqpair.needs_poll == false);
	CU_ASSERT(TAILQ_ENTRY_NOT_ENQUEUED(&tqpair, link));
	CU_ASSERT(tqpair.sock == NULL);
	CU_ASSERT(TAILQ_EMPTY(&tqpair.send_queue) == true);