diff --git a/lib/event/reactor.c b/lib/event/reactor.c index b70b56b72..91ee1a1f8 100644 --- a/lib/event/reactor.c +++ b/lib/event/reactor.c @@ -703,7 +703,12 @@ _reactors_scheduler_update_core_mode(void *ctx) struct spdk_reactor *reactor; int rc = 0; - g_scheduler_core_number = spdk_env_get_next_core(g_scheduler_core_number); + if (g_scheduler_core_number == SPDK_ENV_LCORE_ID_ANY) { + g_scheduler_core_number = spdk_env_get_first_core(); + } else { + g_scheduler_core_number = spdk_env_get_next_core(g_scheduler_core_number); + } + if (g_scheduler_core_number == SPDK_ENV_LCORE_ID_ANY) { _reactors_scheduler_fini(); return; @@ -728,7 +733,7 @@ _reactors_scheduler_balance(void *arg1, void *arg2) if (g_reactor_state == SPDK_REACTOR_STATE_RUNNING) { g_scheduler->balance(g_core_infos, g_reactor_count, &g_governor); - g_scheduler_core_number = spdk_env_get_first_core(); + g_scheduler_core_number = SPDK_ENV_LCORE_ID_ANY; _reactors_scheduler_update_core_mode(NULL); } }