From: Tokunori Ikegami Date: Sat, 7 Oct 2023 03:34:52 +0000 (+0900) Subject: nvme-print: Add nvme_zns_start_zone_list() API function X-Git-Tag: v2.7~150 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=a2781fd9aab91b07c853a42ce28cba7d9a640dc6;p=users%2Fsagi%2Fnvme-cli.git nvme-print: Add nvme_zns_start_zone_list() API function Signed-off-by: Tokunori Ikegami --- diff --git a/nvme-print-binary.c b/nvme-print-binary.c index 4adf444d..23d176d1 100644 --- a/nvme-print-binary.c +++ b/nvme-print-binary.c @@ -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, diff --git a/nvme-print-json.c b/nvme-print-json.c index 840f64d1..db7e6f7b 100644 --- a/nvme-print-json.c +++ b/nvme-print-json.c @@ -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, diff --git a/nvme-print-stdout.c b/nvme-print-stdout.c index c192a99d..35fc1e8e 100644 --- a/nvme-print-stdout.c +++ b/nvme-print-stdout.c @@ -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, diff --git a/nvme-print.c b/nvme-print.c index 5bb45bf1..89d02c1c 100644 --- a/nvme-print.c +++ b/nvme-print.c @@ -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) { diff --git a/nvme-print.h b/nvme-print.h index deda415c..bc1d8576 100644 --- a/nvme-print.h +++ b/nvme-print.h @@ -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, diff --git a/plugins/zns/zns.c b/plugins/zns/zns.c index 0bc42bc2..ec62fd05 100644 --- a/plugins/zns/zns.c +++ b/plugins/zns/zns.c @@ -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)