nvme: move the CSI sanity check into nvme_ns_report_zones
authorChristoph Hellwig <hch@lst.de>
Wed, 19 May 2021 07:11:54 +0000 (09:11 +0200)
committerChristoph Hellwig <hch@lst.de>
Thu, 3 Jun 2021 07:29:25 +0000 (10:29 +0300)
Move the CSI check into nvme_ns_report_zones to clean up the code
a little bit and prepare for further refactoring.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Keith Busch <kbusch@kernel.org>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
drivers/nvme/host/zns.c

index 475dd45c3db49ba87fd62ff76b17027a4601db92..31e789ecd940107234f2f9183d32ffc0625bf650 100644 (file)
@@ -180,6 +180,9 @@ static int nvme_ns_report_zones(struct nvme_ns *ns, sector_t sector,
        unsigned int nz, i;
        size_t buflen;
 
+       if (ns->head->ids.csi != NVME_CSI_ZNS)
+               return -EINVAL;
+
        report = nvme_zns_alloc_report_buffer(ns, nr_zones, &buflen);
        if (!report)
                return -ENOMEM;
@@ -237,11 +240,7 @@ int nvme_report_zones(struct gendisk *disk, sector_t sector,
        ns = nvme_get_ns_from_disk(disk, &head, &srcu_idx);
        if (unlikely(!ns))
                return -EWOULDBLOCK;
-
-       if (ns->head->ids.csi == NVME_CSI_ZNS)
-               ret = nvme_ns_report_zones(ns, sector, nr_zones, cb, data);
-       else
-               ret = -EINVAL;
+       ret = nvme_ns_report_zones(ns, sector, nr_zones, cb, data);
        nvme_put_ns_from_disk(head, srcu_idx);
 
        return ret;