]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
nvme-print: Add nvme_zns_start_zone_list() API function
authorTokunori Ikegami <ikegami.t@gmail.com>
Sat, 7 Oct 2023 03:34:52 +0000 (12:34 +0900)
committerDaniel Wagner <wagi@monom.org>
Sat, 7 Oct 2023 12:56:05 +0000 (14:56 +0200)
Signed-off-by: Tokunori Ikegami <ikegami.t@gmail.com>
nvme-print-binary.c
nvme-print-json.c
nvme-print-stdout.c
nvme-print.c
nvme-print.h
plugins/zns/zns.c

index 4adf444d32b37d344a9379cc2d2717211e6e9e45..23d176d1538947147c8446fdb2af15bdc46000ca 100644 (file)
@@ -349,6 +349,7 @@ static struct print_ops binary_print_ops = {
        .smart_log                      = binary_smart_log,
        .supported_cap_config_list_log  = binary_supported_cap_config_log,
        .supported_log_pages            = binary_supported_log,
+       .zns_start_zone_list            = NULL,
        .zns_changed_zone_log           = binary_zns_changed,
        .zns_finish_zone_list           = NULL,
        .zns_id_ctrl                    = binary_zns_id_ctrl,
index 840f64d11e39164a1aea2a661712b9944a304b9d..db7e6f7bbadddfac434364ababc73101258c0e8f 100644 (file)
@@ -2257,6 +2257,11 @@ static void json_nvme_list_ns(struct nvme_ns_list *ns_list)
        json_free_object(root);
 }
 
+static void json_zns_start_zone_list(__u64 nr_zones, struct json_object **zone_list)
+{
+       *zone_list = json_create_array();
+}
+
 static void json_zns_finish_zone_list(__u64 nr_zones,
                                      struct json_object *zone_list)
 {
@@ -3080,6 +3085,7 @@ static struct print_ops json_print_ops = {
        .smart_log                      = json_smart_log,
        .supported_cap_config_list_log  = json_supported_cap_config_log,
        .supported_log_pages            = json_support_log,
+       .zns_start_zone_list            = json_zns_start_zone_list,
        .zns_changed_zone_log           = NULL,
        .zns_finish_zone_list           = json_zns_finish_zone_list,
        .zns_id_ctrl                    = json_nvme_zns_id_ctrl,
index c192a99d569e6c6cf3a798eed1f85b2ea7561010..35fc1e8e0d337196faa79735a8d82baaa05ab7ae 100644 (file)
@@ -3261,6 +3261,11 @@ static void stdout_list_ns(struct nvme_ns_list *ns_list)
        }
 }
 
+static void stdout_zns_start_zone_list(__u64 nr_zones, struct json_object **zone_list)
+{
+       printf("nr_zones: %"PRIu64"\n", (uint64_t)le64_to_cpu(nr_zones));
+}
+
 static void stdout_zns_changed(struct nvme_zns_changed_zone_log *log)
 {
        uint16_t nrzid;
@@ -5100,6 +5105,7 @@ static struct print_ops stdout_print_ops = {
        .smart_log                      = stdout_smart_log,
        .supported_cap_config_list_log  = stdout_supported_cap_config_log,
        .supported_log_pages            = stdout_supported_log,
+       .zns_start_zone_list            = stdout_zns_start_zone_list,
        .zns_changed_zone_log           = stdout_zns_changed,
        .zns_finish_zone_list           = NULL,
        .zns_id_ctrl                    = stdout_zns_id_ctrl,
index 5bb45bf1b7603aeabd93763d7d2929c50fdcd21f..89d02c1ceeb485a2f615ed0e6a5a1e7daccbf2e2 100644 (file)
@@ -501,6 +501,12 @@ void nvme_show_list_ns(struct nvme_ns_list *ns_list, enum nvme_print_flags flags
        nvme_print(ns_list, flags, ns_list);
 }
 
+void nvme_zns_start_zone_list(__u64 nr_zones, struct json_object **zone_list,
+                             enum nvme_print_flags flags)
+{
+       nvme_print(zns_start_zone_list, flags, nr_zones, zone_list);
+}
+
 void nvme_show_zns_changed(struct nvme_zns_changed_zone_log *log,
                           enum nvme_print_flags flags)
 {
index deda415ca130d428c87883b5f464dad5bb4126d9..bc1d857677397147db62422a81267b49bc85ca62 100644 (file)
@@ -71,6 +71,7 @@ struct print_ops {
        void (*smart_log)(struct nvme_smart_log *smart, unsigned int nsid, const char *devname);
        void (*supported_cap_config_list_log)(struct nvme_supported_cap_config_list_log *cap_log);
        void (*supported_log_pages)(struct nvme_supported_log_pages *support_log, const char *devname);
+       void (*zns_start_zone_list)(__u64 nr_zones, struct json_object **zone_list);
        void (*zns_changed_zone_log)(struct nvme_zns_changed_zone_log *log);
        void (*zns_finish_zone_list)(__u64 nr_zones, struct json_object *zone_list);
        void (*zns_id_ctrl)(struct nvme_zns_id_ctrl *ctrl);
@@ -221,6 +222,8 @@ void nvme_show_nvm_id_ns(struct nvme_nvm_id_ns *nvm_ns, unsigned int nsid,
                                                bool cap_only, enum nvme_print_flags flags);
 void nvme_show_zns_id_ns(struct nvme_zns_id_ns *ns,
                         struct nvme_id_ns *id_ns, enum nvme_print_flags flags);
+void nvme_zns_start_zone_list(__u64 nr_zones, struct json_object **zone_list,
+                             enum nvme_print_flags flags);
 void nvme_show_zns_changed(struct nvme_zns_changed_zone_log *log,
                           enum nvme_print_flags flags);
 void nvme_zns_finish_zone_list(__u64 nr_zones, struct json_object *zone_list,
index 0bc42bc28f6edffc3a1466e660cf953704fd1729..ec62fd050b4965d412e0b31c58061e56f987a70d 100644 (file)
@@ -957,10 +957,8 @@ static int report_zones(int argc, char **argv, struct command *cmd, struct plugi
        }
 
        offset = cfg.zslba;
-       if (flags & JSON)
-               zone_list = json_create_array();
-       else
-               printf("nr_zones: %"PRIu64"\n", (uint64_t)le64_to_cpu(total_nr_zones));
+
+       nvme_zns_start_zone_list(total_nr_zones, &zone_list, flags);
 
        while (nr_zones_retrieved < nr_zones) {
                if (nr_zones_retrieved >= nr_zones)