Commit 1f41fb36 authored by Ben Walker's avatar Ben Walker Committed by Jim Harris
Browse files

iscsi: Simplify iscsi_poll_group_add/remove conn operations



We don't need to have operations to remove just the socket.

Change-Id: I00e0c7fb81af98d1c072ba126ce22b41954e313b
Signed-off-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/452728


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent d6d5f870
Loading
Loading
Loading
Loading
+8 −32
Original line number Diff line number Diff line
@@ -177,59 +177,39 @@ err:
}

static void
iscsi_poll_group_add_conn_sock(struct spdk_iscsi_conn *conn)
iscsi_poll_group_add_conn(struct spdk_iscsi_conn *conn)
{
	struct spdk_iscsi_poll_group *poll_group;
	int rc;

	assert(conn->lcore == spdk_env_get_current_core());

	poll_group = &g_spdk_iscsi.poll_group[conn->lcore];

	rc = spdk_sock_group_add_sock(poll_group->sock_group, conn->sock, iscsi_conn_sock_cb, conn);
	if (rc < 0) {
		SPDK_ERRLOG("Failed to add sock=%p of conn=%p\n", conn->sock, conn);
		return;
	}

	conn->is_stopped = false;
	STAILQ_INSERT_TAIL(&poll_group->connections, conn, link);
}

static void
iscsi_poll_group_remove_conn_sock(struct spdk_iscsi_conn *conn)
iscsi_poll_group_remove_conn(struct spdk_iscsi_conn *conn)
{
	struct spdk_iscsi_poll_group *poll_group;
	int rc;

	assert(conn->lcore == spdk_env_get_current_core());

	poll_group = &g_spdk_iscsi.poll_group[conn->lcore];

	rc = spdk_sock_group_remove_sock(poll_group->sock_group, conn->sock);
	if (rc < 0) {
		SPDK_ERRLOG("Failed to remove sock=%p of conn=%p\n", conn->sock, conn);
	}
}

static void
iscsi_poll_group_add_conn(struct spdk_iscsi_conn *conn)
{
	struct spdk_iscsi_poll_group *poll_group;

	assert(conn->lcore == spdk_env_get_current_core());

	poll_group = &g_spdk_iscsi.poll_group[conn->lcore];

	conn->is_stopped = false;
	STAILQ_INSERT_TAIL(&poll_group->connections, conn, link);
	iscsi_poll_group_add_conn_sock(conn);
}

static void
iscsi_poll_group_remove_conn(struct spdk_iscsi_conn *conn)
{
	struct spdk_iscsi_poll_group *poll_group;

	assert(conn->lcore == spdk_env_get_current_core());

	poll_group = &g_spdk_iscsi.poll_group[conn->lcore];
	spdk_poller_unregister(&conn->flush_poller);

	conn->is_stopped = true;
	STAILQ_REMOVE(&poll_group->connections, conn, spdk_iscsi_conn, link);
@@ -527,10 +507,9 @@ _iscsi_conn_destruct(struct spdk_iscsi_conn *conn)
	int rc;

	spdk_clear_all_transfer_task(conn, NULL, NULL);
	iscsi_poll_group_remove_conn_sock(conn);
	iscsi_poll_group_remove_conn(conn);
	spdk_sock_close(&conn->sock);
	spdk_poller_unregister(&conn->logout_timer);
	spdk_poller_unregister(&conn->flush_poller);

	rc = iscsi_conn_free_tasks(conn);
	if (rc < 0) {
@@ -767,7 +746,6 @@ iscsi_conn_stop(struct spdk_iscsi_conn *conn)
	assert(conn->lcore == spdk_env_get_current_core());

	__sync_fetch_and_sub(&g_num_connections[conn->lcore], 1);
	iscsi_poll_group_remove_conn(conn);
}

void
@@ -1502,8 +1480,6 @@ spdk_iscsi_conn_schedule(struct spdk_iscsi_conn *conn)
		pthread_mutex_unlock(&target->mutex);
	}

	iscsi_poll_group_remove_conn_sock(conn);
	spdk_poller_unregister(&conn->flush_poller);
	__sync_fetch_and_sub(&g_num_connections[conn->lcore], 1);
	iscsi_poll_group_remove_conn(conn);