From 848e9e2dd947beef7dade3e0f2f8b18cd3b1fd3a Mon Sep 17 00:00:00 2001 From: Seth Howell Date: Wed, 12 Aug 2020 17:12:57 -0700 Subject: [PATCH] lib/nvmf: modify subsystem_state_change. If we are already in the desired state, just call the callback directly from the subsystem_state_change function. That way we save a lot of message passing. Signed-off-by: Seth Howell Change-Id: I6cf8563524610d9125d53266e3c0e179e064bf63 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3760 Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Aleksey Marchuk --- lib/nvmf/subsystem.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/nvmf/subsystem.c b/lib/nvmf/subsystem.c index a96745e12..02c0b166e 100644 --- a/lib/nvmf/subsystem.c +++ b/lib/nvmf/subsystem.c @@ -575,6 +575,15 @@ nvmf_subsystem_state_change(struct spdk_nvmf_subsystem *subsystem, return -EBUSY; } + /* If we are already in the requested state, just call the callback immediately. */ + if (subsystem->state == requested_state) { + subsystem->changing_state = false; + if (cb_fn) { + cb_fn(subsystem, cb_arg, 0); + } + return 0; + } + intermediate_state = nvmf_subsystem_get_intermediate_state(subsystem->state, requested_state); assert(intermediate_state != SPDK_NVMF_SUBSYSTEM_NUM_STATES);