diff --git a/lib/iscsi/conn.c b/lib/iscsi/conn.c index 0e9097840..8056611d0 100644 --- a/lib/iscsi/conn.c +++ b/lib/iscsi/conn.c @@ -546,7 +546,7 @@ static void spdk_iscsi_conn_check_shutdown_cb(void *arg1, void *arg2) { spdk_iscsi_conns_cleanup(); - spdk_iscsi_fini_done(); + spdk_shutdown_iscsi_conns_done(); } static void diff --git a/lib/iscsi/iscsi.h b/lib/iscsi/iscsi.h index 7059fdfc9..c83a35afd 100644 --- a/lib/iscsi/iscsi.h +++ b/lib/iscsi/iscsi.h @@ -331,7 +331,7 @@ typedef void (*spdk_iscsi_init_cb)(void *cb_arg, int rc); void spdk_iscsi_init(spdk_iscsi_init_cb cb_fn, void *cb_arg); typedef void (*spdk_iscsi_fini_cb)(void *arg); void spdk_iscsi_fini(spdk_iscsi_fini_cb cb_fn, void *cb_arg); -void spdk_iscsi_fini_done(void); +void spdk_shutdown_iscsi_conns_done(void); void spdk_iscsi_config_text(FILE *fp); int spdk_iscsi_send_nopin(struct spdk_iscsi_conn *conn); diff --git a/lib/iscsi/iscsi_subsystem.c b/lib/iscsi/iscsi_subsystem.c index 4abf53121..4902646fb 100644 --- a/lib/iscsi/iscsi_subsystem.c +++ b/lib/iscsi/iscsi_subsystem.c @@ -860,6 +860,18 @@ iscsi_create_poll_group(void *ctx) pg->poller = spdk_poller_register(spdk_iscsi_poll_group_poll, pg, 0); } +static void +iscsi_unregister_poll_group(void *ctx) +{ + struct spdk_iscsi_poll_group *pg; + + pg = &g_spdk_iscsi.poll_group[spdk_env_get_current_core()]; + assert(pg != NULL); + assert(pg->poller != NULL); + + spdk_poller_unregister(&pg->poller); +} + static void spdk_initialize_iscsi_poll_group(void) { @@ -926,8 +938,8 @@ spdk_iscsi_fini(spdk_iscsi_fini_cb cb_fn, void *cb_arg) spdk_shutdown_iscsi_conns(); } -void -spdk_iscsi_fini_done(void) +static void +spdk_iscsi_fini_done(void *arg) { spdk_iscsi_check_pools(); spdk_iscsi_free_pools(); @@ -943,6 +955,12 @@ spdk_iscsi_fini_done(void) g_fini_cb_fn(g_fini_cb_arg); } +void +spdk_shutdown_iscsi_conns_done(void) +{ + spdk_for_each_thread(iscsi_unregister_poll_group, NULL, spdk_iscsi_fini_done); +} + void spdk_iscsi_config_text(FILE *fp) { diff --git a/test/unit/lib/iscsi/conn.c/conn_ut.c b/test/unit/lib/iscsi/conn.c/conn_ut.c index 05bb6c84e..0174fed73 100644 --- a/test/unit/lib/iscsi/conn.c/conn_ut.c +++ b/test/unit/lib/iscsi/conn.c/conn_ut.c @@ -243,7 +243,7 @@ spdk_iscsi_tgt_node_cleanup_luns(struct spdk_iscsi_conn *conn, } void -spdk_iscsi_fini_done(void) +spdk_shutdown_iscsi_conns_done(void) { }