From 1f41fb365b3ddee3e0da171bc14b011cd4447dd6 Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Tue, 30 Apr 2019 11:33:43 -0700 Subject: [PATCH] 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: Ben Walker Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/452728 Tested-by: SPDK CI Jenkins Reviewed-by: Shuhei Matsumoto Reviewed-by: Jim Harris --- lib/iscsi/conn.c | 46 +++++++++++----------------------------------- 1 file changed, 11 insertions(+), 35 deletions(-) diff --git a/lib/iscsi/conn.c b/lib/iscsi/conn.c index 9edbbf53c..3142eb46b 100644 --- a/lib/iscsi/conn.c +++ b/lib/iscsi/conn.c @@ -177,60 +177,40 @@ 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; } -} - -static void -iscsi_poll_group_remove_conn_sock(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; + 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); + } + + 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);