Hi Keith, On 2022-08-16 23:14, Keith Busch wrote: > On Thu, Aug 11, 2022 at 04:30:35PM +0200, Pankaj Raghav wrote: >> @@ -101,13 +101,6 @@ int nvme_update_zone_info(struct nvme_ns *ns, unsigned lbaf) >> } >> >> ns->zsze = nvme_lba_to_sect(ns, le64_to_cpu(id->lbafe[lbaf].zsze)); >> - if (!is_power_of_2(ns->zsze)) { >> - dev_warn(ns->ctrl->device, >> - "invalid zone size:%llu for namespace:%u\n", >> - ns->zsze, ns->head->ns_id); >> - status = -ENODEV; >> - goto free_data; >> - } > > We used to bail out early if the format wasn't supported, which wouldn't create > the namespace. > > Now you are relying on blk_revalidate_disk_zones() to report an error for > invalid format, but the handling for an error there is different: the namespace > still gets created. I'm not sure if that's a problem, but it's different. That is right but it is not a problem. Once the block layer supports the non-po2 zone sizes, we don't need to bail out here because it will be compatible. If unequal zone sizes are found, block layer will report an error during blk_revalidate_disk_zones() which is the current behavior anyway. Other checks such as zone operation support are still in nvme_update_zone_info() resulting in an early bail out if violated.