[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);
> + }
> +}
signature.asc
Description: PGP signature
- RE: [PATCH v7 03/11] hw/block/nvme: Add support for Namespace Types, (continued)
- [PATCH v7 04/11] hw/block/nvme: Support allocated CNS command variants, Dmitry Fomichev, 2020/10/18
- [PATCH v7 05/11] hw/block/nvme: Support Zoned Namespace Command Set, Dmitry Fomichev, 2020/10/18
- [PATCH v7 07/11] hw/block/nvme: Support Zone Descriptor Extensions, Dmitry Fomichev, 2020/10/18
- [PATCH v7 08/11] hw/block/nvme: Add injection of Offline/Read-Only zones, Dmitry Fomichev, 2020/10/18
- [PATCH v7 06/11] hw/block/nvme: Introduce max active and open zone limits, Dmitry Fomichev, 2020/10/18
- [PATCH v7 09/11] hw/block/nvme: Document zoned parameters in usage text, Dmitry Fomichev, 2020/10/18
- [PATCH v7 10/11] hw/block/nvme: Separate read and write handlers, Dmitry Fomichev, 2020/10/18