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