diff --git a/module/event/subsystems/nvmf/nvmf_tgt.c b/module/event/subsystems/nvmf/nvmf_tgt.c index d8b5767a4..bac92ad98 100644 --- a/module/event/subsystems/nvmf/nvmf_tgt.c +++ b/module/event/subsystems/nvmf/nvmf_tgt.c @@ -93,12 +93,17 @@ _spdk_nvmf_shutdown_cb(void *arg1) if (g_tgt_state < NVMF_TGT_RUNNING) { spdk_thread_send_msg(spdk_get_thread(), _spdk_nvmf_shutdown_cb, NULL); return; - } else if (g_tgt_state > NVMF_TGT_RUNNING) { + } else if (g_tgt_state != NVMF_TGT_RUNNING && g_tgt_state != NVMF_TGT_ERROR) { /* Already in Shutdown status, ignore the signal */ return; } - g_tgt_state = NVMF_TGT_FINI_STOP_SUBSYSTEMS; + if (g_tgt_state == NVMF_TGT_ERROR) { + /* Parse configuration error */ + g_tgt_state = NVMF_TGT_FINI_FREE_RESOURCES; + } else { + g_tgt_state = NVMF_TGT_FINI_STOP_SUBSYSTEMS; + } nvmf_tgt_advance_state(); }