iscsi: unregister poll groups on shutdown

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: Ic2bae1c750d2c9b35bded8ed96c3b84832690ce2

Reviewed-on: https://review.gerrithub.io/401479
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
Jim Harris 2018-02-26 08:30:05 -07:00
parent 6285e36e5a
commit d95bb23258
4 changed files with 23 additions and 5 deletions

View File

@ -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

View File

@ -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);

View File

@ -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)
{

View File

@ -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)
{
}