qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v7 05/11] hw/block/nvme: Support Zoned Namespace Command Set


From: Klaus Jensen
Subject: Re: [PATCH v7 05/11] hw/block/nvme: Support Zoned Namespace Command Set
Date: Wed, 21 Oct 2020 12:26:04 +0200

On Oct 19 11:17, Dmitry Fomichev wrote:
> +/*
> + * Close or finish all the zones that are currently open.
> + */
> +static void nvme_zoned_clear_ns(NvmeNamespace *ns)
> +{
> +    NvmeZone *zone;
> +    uint32_t set_state;
> +    int i;
> +
> +    zone = ns->zone_array;
> +    for (i = 0; i < ns->num_zones; i++, zone++) {
> +        switch (nvme_get_zone_state(zone)) {
> +        case NVME_ZONE_STATE_IMPLICITLY_OPEN:
> +            QTAILQ_REMOVE(&ns->imp_open_zones, zone, entry);
> +            break;
> +        case NVME_ZONE_STATE_EXPLICITLY_OPEN:
> +            QTAILQ_REMOVE(&ns->exp_open_zones, zone, entry);
> +            break;
> +        case NVME_ZONE_STATE_CLOSED:
> +            /* fall through */
> +        default:
> +            continue;
> +        }
> +
> +        if (zone->d.wp == zone->d.zslba) {
> +            set_state = NVME_ZONE_STATE_EMPTY;
> +        } else {
> +            set_state = NVME_ZONE_STATE_CLOSED;
> +        }
> +
> +        switch (set_state) {
> +        case NVME_ZONE_STATE_CLOSED:
> +            trace_pci_nvme_clear_ns_close(nvme_get_zone_state(zone),
> +                                          zone->d.zslba);
> +            QTAILQ_INSERT_TAIL(&ns->closed_zones, zone, entry);
> +            break;
> +        case NVME_ZONE_STATE_EMPTY:
> +            trace_pci_nvme_clear_ns_reset(nvme_get_zone_state(zone),
> +                                          zone->d.zslba);
> +            break;
> +        case NVME_ZONE_STATE_FULL:
> +            trace_pci_nvme_clear_ns_full(nvme_get_zone_state(zone),
> +                                         zone->d.zslba);
> +            zone->d.wp = nvme_zone_wr_boundary(zone);
> +            QTAILQ_INSERT_TAIL(&ns->full_zones, zone, entry);
> +        }

No need for the switch here - just add to the closed list in the
conditional.

The NVME_ZONE_STATE_FULL case is unreachable.

> +
> +        zone->w_ptr = zone->d.wp;
> +        nvme_set_zone_state(zone, set_state);
> +    }
> +}

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]