Lines Matching full:zone

201         error_setg(errp, "zone capacity %"PRIu64"B exceeds "  in nvme_ns_zoned_check_calc_geometry()
202 "zone size %"PRIu64"B", zone_cap, zone_size); in nvme_ns_zoned_check_calc_geometry()
206 error_setg(errp, "zone size %"PRIu64"B too small, " in nvme_ns_zoned_check_calc_geometry()
211 error_setg(errp, "zone capacity %"PRIu64"B too small, " in nvme_ns_zoned_check_calc_geometry()
217 * Save the main zone geometry values to avoid in nvme_ns_zoned_check_calc_geometry()
228 "of one zone (%"PRIu64"B)", zone_size); in nvme_ns_zoned_check_calc_geometry()
239 NvmeZone *zone; in nvme_ns_zoned_init_state() local
253 zone = ns->zone_array; in nvme_ns_zoned_init_state()
254 for (i = 0; i < ns->num_zones; i++, zone++) { in nvme_ns_zoned_init_state()
258 zone->d.zt = NVME_ZONE_TYPE_SEQ_WRITE; in nvme_ns_zoned_init_state()
259 nvme_set_zone_state(zone, NVME_ZONE_STATE_EMPTY); in nvme_ns_zoned_init_state()
260 zone->d.za = 0; in nvme_ns_zoned_init_state()
261 zone->d.zcap = ns->zone_capacity; in nvme_ns_zoned_init_state()
262 zone->d.zslba = start; in nvme_ns_zoned_init_state()
263 zone->d.wp = start; in nvme_ns_zoned_init_state()
264 zone->w_ptr = start; in nvme_ns_zoned_init_state()
321 * SHALL be deallocated when then zone is in the Empty or Offline states, in nvme_ns_init_zoned()
322 * we can only support DULBE if the zone size is a multiple of the in nvme_ns_init_zoned()
326 warn_report("the zone size (%"PRIu64" blocks) is not a multiple of " in nvme_ns_init_zoned()
337 static void nvme_clear_zone(NvmeNamespace *ns, NvmeZone *zone) in nvme_clear_zone() argument
341 zone->w_ptr = zone->d.wp; in nvme_clear_zone()
342 state = nvme_get_zone_state(zone); in nvme_clear_zone()
343 if (zone->d.wp != zone->d.zslba || in nvme_clear_zone()
344 (zone->d.za & NVME_ZA_ZD_EXT_VALID)) { in nvme_clear_zone()
346 trace_pci_nvme_clear_ns_close(state, zone->d.zslba); in nvme_clear_zone()
347 nvme_set_zone_state(zone, NVME_ZONE_STATE_CLOSED); in nvme_clear_zone()
350 QTAILQ_INSERT_HEAD(&ns->closed_zones, zone, entry); in nvme_clear_zone()
352 trace_pci_nvme_clear_ns_reset(state, zone->d.zslba); in nvme_clear_zone()
353 if (zone->d.za & NVME_ZA_ZRWA_VALID) { in nvme_clear_zone()
354 zone->d.za &= ~NVME_ZA_ZRWA_VALID; in nvme_clear_zone()
357 nvme_set_zone_state(zone, NVME_ZONE_STATE_EMPTY); in nvme_clear_zone()
366 NvmeZone *zone, *next; in nvme_zoned_ns_shutdown() local
368 QTAILQ_FOREACH_SAFE(zone, &ns->closed_zones, entry, next) { in nvme_zoned_ns_shutdown()
369 QTAILQ_REMOVE(&ns->closed_zones, zone, entry); in nvme_zoned_ns_shutdown()
371 nvme_clear_zone(ns, zone); in nvme_zoned_ns_shutdown()
373 QTAILQ_FOREACH_SAFE(zone, &ns->imp_open_zones, entry, next) { in nvme_zoned_ns_shutdown()
374 QTAILQ_REMOVE(&ns->imp_open_zones, zone, entry); in nvme_zoned_ns_shutdown()
377 nvme_clear_zone(ns, zone); in nvme_zoned_ns_shutdown()
379 QTAILQ_FOREACH_SAFE(zone, &ns->exp_open_zones, entry, next) { in nvme_zoned_ns_shutdown()
380 QTAILQ_REMOVE(&ns->exp_open_zones, zone, entry); in nvme_zoned_ns_shutdown()
383 nvme_clear_zone(ns, zone); in nvme_zoned_ns_shutdown()
608 error_setg(errp, "zone descriptor extension size must be a " in nvme_ns_check_constraints()
614 "zone descriptor extension size is too large"); in nvme_ns_check_constraints()
621 error_setg(errp, "zone random write area size (zoned.zrwas " in nvme_ns_check_constraints()
633 error_setg(errp, "zone random write area size (zoned.zrwas " in nvme_ns_check_constraints()
634 "%"PRIu64") must be a multiple of the zone random " in nvme_ns_check_constraints()
642 error_setg(errp, "number of zone random write area " in nvme_ns_check_constraints()