nvmf_tgt: reverse states during shutdown
Now that the acceptor poller is also checking for asynchronous rdma events at the transport layer, we need to make sure that this is running until all of the poll groups are deleted. Change-Id: I34973047fcb247b8a5a36cc7db681ab0b3cb0779 Signed-off-by: Seth Howell <seth.howell@intel.com> Reviewed-on: https://review.gerrithub.io/420680 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Ziye Yang <optimistyzy@gmail.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
This commit is contained in:
parent
e5a6540777
commit
3f6041bce4
@ -47,9 +47,9 @@ enum nvmf_tgt_state {
|
|||||||
NVMF_TGT_INIT_START_SUBSYSTEMS,
|
NVMF_TGT_INIT_START_SUBSYSTEMS,
|
||||||
NVMF_TGT_INIT_START_ACCEPTOR,
|
NVMF_TGT_INIT_START_ACCEPTOR,
|
||||||
NVMF_TGT_RUNNING,
|
NVMF_TGT_RUNNING,
|
||||||
NVMF_TGT_FINI_STOP_ACCEPTOR,
|
|
||||||
NVMF_TGT_FINI_DESTROY_POLL_GROUPS,
|
|
||||||
NVMF_TGT_FINI_STOP_SUBSYSTEMS,
|
NVMF_TGT_FINI_STOP_SUBSYSTEMS,
|
||||||
|
NVMF_TGT_FINI_DESTROY_POLL_GROUPS,
|
||||||
|
NVMF_TGT_FINI_STOP_ACCEPTOR,
|
||||||
NVMF_TGT_FINI_FREE_RESOURCES,
|
NVMF_TGT_FINI_FREE_RESOURCES,
|
||||||
NVMF_TGT_STOPPED,
|
NVMF_TGT_STOPPED,
|
||||||
NVMF_TGT_ERROR,
|
NVMF_TGT_ERROR,
|
||||||
@ -86,7 +86,7 @@ _spdk_nvmf_shutdown_cb(void *arg1, void *arg2)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_tgt_state = NVMF_TGT_FINI_STOP_ACCEPTOR;
|
g_tgt_state = NVMF_TGT_FINI_STOP_SUBSYSTEMS;
|
||||||
nvmf_tgt_advance_state();
|
nvmf_tgt_advance_state();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,7 +144,7 @@ acceptor_poll(void *arg)
|
|||||||
static void
|
static void
|
||||||
nvmf_tgt_destroy_poll_group_done(void *ctx)
|
nvmf_tgt_destroy_poll_group_done(void *ctx)
|
||||||
{
|
{
|
||||||
g_tgt_state = NVMF_TGT_FINI_FREE_RESOURCES;
|
g_tgt_state = NVMF_TGT_FINI_STOP_ACCEPTOR;
|
||||||
nvmf_tgt_advance_state();
|
nvmf_tgt_advance_state();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -286,10 +286,6 @@ nvmf_tgt_advance_state(void)
|
|||||||
case NVMF_TGT_RUNNING:
|
case NVMF_TGT_RUNNING:
|
||||||
spdk_subsystem_init_next(0);
|
spdk_subsystem_init_next(0);
|
||||||
break;
|
break;
|
||||||
case NVMF_TGT_FINI_STOP_ACCEPTOR:
|
|
||||||
spdk_poller_unregister(&g_acceptor_poller);
|
|
||||||
g_tgt_state = NVMF_TGT_FINI_STOP_SUBSYSTEMS;
|
|
||||||
break;
|
|
||||||
case NVMF_TGT_FINI_STOP_SUBSYSTEMS: {
|
case NVMF_TGT_FINI_STOP_SUBSYSTEMS: {
|
||||||
struct spdk_nvmf_subsystem *subsystem;
|
struct spdk_nvmf_subsystem *subsystem;
|
||||||
|
|
||||||
@ -308,6 +304,10 @@ nvmf_tgt_advance_state(void)
|
|||||||
NULL,
|
NULL,
|
||||||
nvmf_tgt_destroy_poll_group_done);
|
nvmf_tgt_destroy_poll_group_done);
|
||||||
break;
|
break;
|
||||||
|
case NVMF_TGT_FINI_STOP_ACCEPTOR:
|
||||||
|
spdk_poller_unregister(&g_acceptor_poller);
|
||||||
|
g_tgt_state = NVMF_TGT_FINI_FREE_RESOURCES;
|
||||||
|
break;
|
||||||
case NVMF_TGT_FINI_FREE_RESOURCES:
|
case NVMF_TGT_FINI_FREE_RESOURCES:
|
||||||
spdk_nvmf_tgt_destroy(g_spdk_nvmf_tgt, nvmf_tgt_destroy_done, NULL);
|
spdk_nvmf_tgt_destroy(g_spdk_nvmf_tgt, nvmf_tgt_destroy_done, NULL);
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user