diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c index 9aa38223a..f34b07daa 100644 --- a/lib/nvme/nvme_ctrlr.c +++ b/lib/nvme/nvme_ctrlr.c @@ -1312,6 +1312,12 @@ nvme_ctrlr_set_state(struct spdk_nvme_ctrlr *ctrlr, enum nvme_ctrlr_state state, uint64_t ticks_per_ms, timeout_in_ticks, now_ticks; ctrlr->state = state; + if (timeout_in_ms == NVME_TIMEOUT_KEEP_EXISTING) { + NVME_CTRLR_DEBUGLOG(ctrlr, "setting state to %s (keeping existing timeout)\n", + nvme_ctrlr_state_string(ctrlr->state)); + return; + } + if (timeout_in_ms == NVME_TIMEOUT_INFINITE) { goto inf; } diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index a2875b690..721c6b942 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -740,7 +740,8 @@ enum nvme_ctrlr_state { NVME_CTRLR_STATE_ERROR }; -#define NVME_TIMEOUT_INFINITE 0 +#define NVME_TIMEOUT_INFINITE 0 +#define NVME_TIMEOUT_KEEP_EXISTING UINT64_MAX struct spdk_nvme_ctrlr_aer_completion_list { struct spdk_nvme_cpl cpl;