[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] hw/block/nvme: fix Close Zone
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH] hw/block/nvme: fix Close Zone |
Date: |
Mon, 8 Feb 2021 10:03:15 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 |
Hi Dmitry, Klaus.
On 2/8/21 1:32 AM, Dmitry Fomichev wrote:
> Implicitly and Explicitly Open zones can be closed by Close Zone
> management function. This got broken by a recent commit 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>
> Fixes: 053b5a302c3("hw/block/nvme: refactor zone resource management")
'053b5a302c3': unknown revision or path not in the working tree.
If you point at an unmerged commit, why not fix it directly
before merging?
> ---
> hw/block/nvme.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/hw/block/nvme.c b/hw/block/nvme.c
> index 6b84e34843..c2f0c88fbf 100644
> --- a/hw/block/nvme.c
> +++ b/hw/block/nvme.c
> @@ -1308,14 +1308,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;
>