diff options
author | Dmitry Fomichev <dmitry.fomichev@wdc.com> | 2021-02-08 09:32:56 +0900 |
---|---|---|
committer | Klaus Jensen <k.jensen@samsung.com> | 2021-03-09 11:00:57 +0100 |
commit | 92323c8c2566b8ea4cdfe8e72a22d2651b0ee6af (patch) | |
tree | 2e754b6e2f6dfef05874ce9ac573f6594481b388 /hw/block/nvme.c | |
parent | e4e430b3d6baa1c908ba71ca37aad87edac98804 (diff) | |
download | qemu-92323c8c2566b8ea4cdfe8e72a22d2651b0ee6af.zip qemu-92323c8c2566b8ea4cdfe8e72a22d2651b0ee6af.tar.gz qemu-92323c8c2566b8ea4cdfe8e72a22d2651b0ee6af.tar.bz2 |
hw/block/nvme: fix Close Zone
Implicitly and Explicitly Open zones can be closed by Close Zone
management function. This got broken by a recent commit ("hw/block/nvme:
refactor zone resource management") and now such commands fail with
Invalid Zone State Transition status.
Modify nvm_zrm_close() function to make Close Zone work correctly.
Signed-off-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
Diffstat (limited to 'hw/block/nvme.c')
-rw-r--r-- | hw/block/nvme.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/hw/block/nvme.c b/hw/block/nvme.c index ab4723f..56ef07b 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -1319,14 +1319,13 @@ static uint16_t nvme_zrm_finish(NvmeNamespace *ns, NvmeZone *zone) static uint16_t nvme_zrm_close(NvmeNamespace *ns, NvmeZone *zone) { switch (nvme_get_zone_state(zone)) { - case NVME_ZONE_STATE_CLOSED: - return NVME_SUCCESS; - case NVME_ZONE_STATE_EXPLICITLY_OPEN: case NVME_ZONE_STATE_IMPLICITLY_OPEN: nvme_aor_dec_open(ns); nvme_assign_zone_state(ns, zone, NVME_ZONE_STATE_CLOSED); /* fall through */ + case NVME_ZONE_STATE_CLOSED: + return NVME_SUCCESS; default: return NVME_ZONE_INVAL_TRANSITION; |