diff --git a/nvme-print.c b/nvme-print.c index 8fb8095ac8..92c27646ba 100644 --- a/nvme-print.c +++ b/nvme-print.c @@ -534,9 +534,20 @@ static void nvme_show_cmd_err(const char *msg, bool admin, __u8 opcode, int err) nvme_show_status(err); } -void nvme_show_err(const char *msg, int err) +void nvme_show_err(int err, const char *fmt, ...) { - nvme_show_cmd_err(msg, false, 0, err); + va_list ap; + + _cleanup_free_ char *msg = NULL; + + va_start(ap, fmt); + + if (vasprintf(&msg, fmt, ap) < 0) + msg = NULL; + + nvme_show_cmd_err(msg ? msg : alloc_error, false, 0, err); + + va_end(ap); } void nvme_show_io_cmd_err(const char *msg, __u8 opcode, int err) diff --git a/nvme-print.h b/nvme-print.h index e075cae1b9..a5b9ddb7ed 100644 --- a/nvme-print.h +++ b/nvme-print.h @@ -161,7 +161,7 @@ struct print_ops *nvme_get_stdout_print_ops(nvme_print_flags_t flags); struct print_ops *nvme_get_binary_print_ops(nvme_print_flags_t flags); void nvme_show_status(int status); -void nvme_show_err(const char *msg, int err); +void nvme_show_err(int err, const char *fmt, ...); void nvme_show_io_cmd_err(const char *msg, __u8 opcode, int err); void nvme_show_admin_cmd_err(const char *msg, __u8 opcode, int err); void nvme_show_opcode_status(int status, bool admin, __u8 opcode); diff --git a/nvme.c b/nvme.c index 0445f11bfc..4b8823bd4e 100644 --- a/nvme.c +++ b/nvme.c @@ -333,7 +333,7 @@ static int get_transport_handle(struct nvme_global_ctx *ctx, int argc, ret = nvme_open(ctx, devname, hdl); if (ret) - nvme_show_err(devname, ret); + nvme_show_err(ret, devname); else if (log_level >= LOG_DEBUG) nvme_show_init(); @@ -540,7 +540,7 @@ static int get_smart_log(int argc, char **argv, struct command *acmd, struct plu err = nvme_get_log_smart(hdl, cfg.namespace_id, smart_log); if (err) { - nvme_show_err("smart log", err); + nvme_show_err(err, "smart log"); return err; } @@ -612,7 +612,7 @@ static int get_ana_log(int argc, char **argv, struct command *acmd, err = nvme_get_ana_log_atomic(hdl, true, cfg.groups, ana_log, &ana_log_len, 10); if (err) { - nvme_show_err("ana-log", err); + nvme_show_err(err, "ana-log"); return err; } @@ -931,7 +931,7 @@ static int get_telemetry_log(int argc, char **argv, struct command *acmd, &total_size, &log, da4_support); if (err) { - nvme_show_err("get-telemetry-log", err); + nvme_show_err(err, "get-telemetry-log"); if (err > 0) fprintf(stderr, "Failed to acquire telemetry log %d!\n", err); @@ -1017,7 +1017,7 @@ static int get_endurance_log(int argc, char **argv, struct command *acmd, struct err = nvme_get_log_endurance_group(hdl, cfg.group_id, endurance_log); if (err) { - nvme_show_err("endurance log", err); + nvme_show_err(err, "endurance log"); return err; } @@ -1130,7 +1130,7 @@ static int get_effects_log(int argc, char **argv, struct command *acmd, struct p } if (err) { - nvme_show_err("effects log page", err); + nvme_show_err(err, "effects log page"); goto cleanup_list; } @@ -1175,7 +1175,7 @@ static int get_supported_log_pages(int argc, char **argv, struct command *acmd, err = nvme_get_log_supported_log_pages(hdl, supports); if (err) { - nvme_show_err("supported log pages", err); + nvme_show_err(err, "supported log pages"); return err; } @@ -1248,7 +1248,7 @@ static int get_error_log(int argc, char **argv, struct command *acmd, struct plu err = nvme_get_log_error(hdl, NVME_NSID_ALL, cfg.log_entries, err_log); if (err) { - nvme_show_err("error log", err); + nvme_show_err(err, "error log"); return err; } @@ -1299,7 +1299,7 @@ static int get_fw_log(int argc, char **argv, struct command *acmd, struct plugin err = nvme_get_log_fw_slot(hdl, false, fw_log); if (err) { - nvme_show_err("fw log", err); + nvme_show_err(err, "fw log"); return err; } @@ -1357,8 +1357,8 @@ static int get_changed_ns_list_log(int argc, char **argv, bool alloc) err = nvme_get_log_changed_ns_list(hdl, NVME_NSID_NONE, changed_ns_list_log); if (err) { - nvme_show_err(alloc ? "changed allocated ns list log" : - "changed attached ns list log", err); + nvme_show_err(err, alloc ? "changed allocated ns list log" : + "changed attached ns list log"); return err; } @@ -1429,7 +1429,7 @@ static int get_pred_lat_per_nvmset_log(int argc, char **argv, err = nvme_get_log_predictable_lat_nvmset(hdl, cfg.nvmset_id, plpns_log); if (err) { - nvme_show_err("predictable latency per nvm set", err); + nvme_show_err(err, "predictable latency per nvm set"); return err; } @@ -1496,7 +1496,7 @@ static int get_pred_lat_event_agg_log(int argc, char **argv, err = nvme_identify_ctrl(hdl, ctrl); if (err) { - nvme_show_err("identify controller", err); + nvme_show_err(err, "identify controller"); return err; } @@ -1510,8 +1510,8 @@ static int get_pred_lat_event_agg_log(int argc, char **argv, err = nvme_get_log_predictable_lat_event(hdl, cfg.rae, 0, pea_log, log_size); if (err) { - nvme_show_err( - "predictable latency event aggregate log page", err); + nvme_show_err(err, + "predictable latency event aggregate log page"); return err; } @@ -1576,7 +1576,7 @@ static int get_persistent_event_log(int argc, char **argv, err = nvme_get_log_persistent_event(hdl, cfg.action, pevent, sizeof(*pevent)); if (err) { - nvme_show_err("persistent event log", err); + nvme_show_err(err, "persistent event log"); return err; } @@ -1611,14 +1611,14 @@ static int get_persistent_event_log(int argc, char **argv, err = nvme_get_log_persistent_event(hdl, cfg.action, pevent_log_info, cfg.log_len); if (err) { - nvme_show_err("persistent event log", err); + nvme_show_err(err, "persistent event log"); return err; } err = nvme_get_log_persistent_event(hdl, cfg.action, pevent, sizeof(*pevent)); if (err) { - nvme_show_err("persistent event log", err); + nvme_show_err(err, "persistent event log"); return err; } @@ -1709,8 +1709,7 @@ static int get_endurance_event_agg_log(int argc, char **argv, err = nvme_get_log_endurance_grp_evt(hdl, cfg.rae, 0, endurance_log, log_size); if (err) { - nvme_show_err("endurance group event aggregate log page", - err); + nvme_show_err(err, "endurance group event aggregate log page"); return err; } @@ -1756,7 +1755,7 @@ static int get_lba_status_log(int argc, char **argv, err = nvme_get_log_lba_status(hdl, false, 0, &lslplen, sizeof(__u32)); if (err) { - nvme_show_err("lba status log page", err); + nvme_show_err(err, "lba status log page"); return err; } @@ -1766,7 +1765,7 @@ static int get_lba_status_log(int argc, char **argv, err = nvme_get_log_lba_status(hdl, cfg.rae, 0, lba_status, lslplen); if (err) { - nvme_show_err("lba status log page", err); + nvme_show_err(err, "lba status log page"); return err; } @@ -1808,7 +1807,7 @@ static int get_resv_notif_log(int argc, char **argv, err = nvme_get_log_reservation(hdl, resv); if (err) { - nvme_show_err("resv notifi log", err); + nvme_show_err(err, "resv notifi log"); return err; } @@ -1882,7 +1881,7 @@ static int get_boot_part_log(int argc, char **argv, struct command *acmd, struct err = nvme_get_log_boot_partition(hdl, cfg.lsp, boot, sizeof(*boot)); if (err) { - nvme_show_err("boot partition log", err); + nvme_show_err(err, "boot partition log"); return err; } @@ -1895,7 +1894,7 @@ static int get_boot_part_log(int argc, char **argv, struct command *acmd, struct (struct nvme_boot_partition *)bp_log, sizeof(*boot) + bpsz); if (err) - nvme_show_err("boot partition log", err); + nvme_show_err(err, "boot partition log"); else nvme_show_boot_part_log(&bp_log, nvme_transport_handle_get_name(hdl), @@ -1972,7 +1971,7 @@ static int get_phy_rx_eom_log(int argc, char **argv, struct command *acmd, err = nvme_get_log_phy_rx_eom(hdl, lsp_tmp, cfg.controller, phy_rx_eom_log, phy_rx_eom_log_len); if (err) { - nvme_show_err("phy-rx-eom-log", err); + nvme_show_err(err, "phy-rx-eom-log"); return err; } @@ -1990,7 +1989,7 @@ static int get_phy_rx_eom_log(int argc, char **argv, struct command *acmd, err = nvme_get_log_phy_rx_eom(hdl, cfg.lsp, cfg.controller, phy_rx_eom_log, phy_rx_eom_log_len); if (err) { - nvme_show_err("phy-rx-eom-log", err); + nvme_show_err(err, "phy-rx-eom-log"); return err; } @@ -2043,7 +2042,7 @@ static int get_media_unit_stat_log(int argc, char **argv, struct command *acmd, err = nvme_get_log_media_unit_stat(hdl, cfg.domainid, mus); if (err) { - nvme_show_err("media unit status log", err); + nvme_show_err(err, "media unit status log"); return err; } @@ -2096,8 +2095,7 @@ static int get_supp_cap_config_log(int argc, char **argv, struct command *acmd, err = nvme_get_log_support_cap_config_list(hdl, cfg.domainid, cap_log); if (err) { - nvme_show_err( - "supported capacity configuration list log", err); + nvme_show_err(err, "supported capacity configuration list log"); return err; } @@ -2172,7 +2170,7 @@ static int io_mgmt_send(int argc, char **argv, struct command *acmd, struct plug nvme_init_io_mgmt_send(&cmd, cfg.nsid, cfg.mo, cfg.mos, buf, cfg.data_len); err = nvme_submit_io_passthru(hdl, &cmd); if (err) { - nvme_show_err("io-mgmt-send", err); + nvme_show_err(err, "io-mgmt-send"); return err; } @@ -2235,7 +2233,7 @@ static int io_mgmt_recv(int argc, char **argv, struct command *acmd, struct plug cfg.data_len); err = nvme_submit_io_passthru(hdl, &cmd); if (err) { - nvme_show_err("io-mgmt-recv", err); + nvme_show_err(err, "io-mgmt-recv"); return err; } @@ -2456,7 +2454,7 @@ static int get_log(int argc, char **argv, struct command *acmd, struct plugin *p err = nvme_get_log(hdl, &cmd, cfg.rae, NVME_LOG_PAGE_PDU_SIZE); if (err) { - nvme_show_err("log page", err); + nvme_show_err(err, "log page"); return err; } @@ -2524,7 +2522,7 @@ static int sanitize_log(int argc, char **argv, struct command *acmd, struct plug err = nvme_get_log_sanitize(hdl, cfg.rae, sanitize_log); if (err) { - nvme_show_err("sanitize status log", err); + nvme_show_err(err, "sanitize status log"); return err; } @@ -2575,7 +2573,7 @@ static int get_fid_support_effects_log(int argc, char **argv, struct command *ac err = nvme_get_log_fid_supported_effects(hdl, false, fid_support_log); if (err) { - nvme_show_err("fid support effects log", err); + nvme_show_err(err, "fid support effects log"); return err; } @@ -2627,7 +2625,7 @@ static int get_mi_cmd_support_effects_log(int argc, char **argv, struct command err = nvme_get_log_mi_cmd_supported_effects(hdl, mi_cmd_support_log); if (err) { - nvme_show_err("mi command support effects log", err); + nvme_show_err(err, "mi command support effects log"); return err; } @@ -2686,7 +2684,7 @@ static int list_ctrl(int argc, char **argv, struct command *acmd, struct plugin err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("id controller list", err); + nvme_show_err(err, "id controller list"); return err; } @@ -2761,7 +2759,7 @@ static int list_ns(int argc, char **argv, struct command *acmd, struct plugin *p err = nvme_identify(hdl, cfg.namespace_id - 1, cfg.csi, cns, ns_list, sizeof(*ns_list)); if (err) { - nvme_show_err("id namespace list", err); + nvme_show_err(err, "id namespace list"); return err; } @@ -2817,8 +2815,8 @@ static int id_ns_lba_format(int argc, char **argv, struct command *acmd, struct cfg.lba_format_index, cfg.uuid_index, ns); if (err) { - nvme_show_err( - "identify namespace for specific LBA format", err); + nvme_show_err(err, + "identify namespace for specific LBA format"); return err; } @@ -2869,7 +2867,7 @@ static int id_endurance_grp_list(int argc, char **argv, struct command *acmd, endgrp_list); err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("Id endurance group list", err); + nvme_show_err(err, "Id endurance group list"); return err; } @@ -3120,7 +3118,7 @@ static int parse_lba_num_si(struct nvme_transport_handle *hdl, const char *opt, err = nvme_identify_ctrl(hdl, ctrl); if (err) { - nvme_show_err("identify controller", err); + nvme_show_err(err, "identify controller"); return err; } @@ -3133,7 +3131,7 @@ static int parse_lba_num_si(struct nvme_transport_handle *hdl, const char *opt, } else { err = nvme_identify_active_ns_list(hdl, nsid - 1, ns_list); if (err) { - nvme_show_err("identify namespace list", err); + nvme_show_err(err, "identify namespace list"); return err; } nsid = le32_to_cpu(ns_list->ns[0]); @@ -3145,7 +3143,7 @@ static int parse_lba_num_si(struct nvme_transport_handle *hdl, const char *opt, err = nvme_identify_ns(hdl, nsid, ns); if (err) { - nvme_show_err("identify namespace", err); + nvme_show_err(err, "identify namespace"); return err; } @@ -3314,7 +3312,7 @@ static int create_ns(int argc, char **argv, struct command *acmd, struct plugin if (err) { if (err > 0) fprintf(stderr, "identify failed\n"); - nvme_show_err("identify-namespace", err); + nvme_show_err(err, "identify-namespace"); return err; } for (i = 0; i <= ns->nlbaf; ++i) { @@ -3341,7 +3339,7 @@ static int create_ns(int argc, char **argv, struct command *acmd, struct plugin if (err) { if (err > 0) fprintf(stderr, "identify controller failed\n"); - nvme_show_err("identify-controller", err); + nvme_show_err(err, "identify-controller"); return err; } @@ -3633,7 +3631,7 @@ int __id_ctrl(int argc, char **argv, struct command *acmd, struct plugin *plugin err = nvme_identify_ctrl(hdl, ctrl); if (err) { - nvme_show_err("identify controller", err); + nvme_show_err(err, "identify controller"); return err; } @@ -3683,7 +3681,7 @@ static int nvm_id_ctrl(int argc, char **argv, struct command *acmd, nvme_init_identify_csi_ctrl(&cmd, NVME_CSI_NVM, ctrl_nvm); err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("nvm identify controller", err); + nvme_show_err(err, "nvm identify controller"); return err; } @@ -3747,7 +3745,7 @@ static int nvm_id_ns(int argc, char **argv, struct command *acmd, err = nvme_identify_ns(hdl, cfg.namespace_id, ns); if (err) { - nvme_show_err("nvm identify namespace", err); + nvme_show_err(err, "nvm identify namespace"); return err; } @@ -3758,7 +3756,7 @@ static int nvm_id_ns(int argc, char **argv, struct command *acmd, err = nvme_identify_csi_ns(hdl, cfg.namespace_id, NVME_CSI_NVM, cfg.uuid_index, id_ns); if (err) { - nvme_show_err("nvm identify csi namespace", err); + nvme_show_err(err, "nvm identify csi namespace"); return err; } @@ -3825,8 +3823,8 @@ static int nvm_id_ns_lba_format(int argc, char **argv, struct command *acmd, str cfg.lba_format_index, cfg.uuid_index, nvm_ns); if (err) { - nvme_show_err( - "NVM identify namespace for specific LBA format", err); + nvme_show_err(err, + "NVM identify namespace for specific LBA format"); return err; } @@ -3892,7 +3890,7 @@ static int ns_descs(int argc, char **argv, struct command *acmd, struct plugin * err = nvme_identify_ns_descs_list(hdl, cfg.namespace_id, nsdescs); if (err) { - nvme_show_err("identify namespace", err); + nvme_show_err(err, "identify namespace"); return err; } @@ -3979,7 +3977,7 @@ static int id_ns(int argc, char **argv, struct command *acmd, struct plugin *plu } if (err) { - nvme_show_err("identify namespace", err); + nvme_show_err(err, "identify namespace"); return err; } @@ -4051,8 +4049,8 @@ static int cmd_set_independent_id_ns(int argc, char **argv, struct command *acmd cfg.namespace_id, ns); err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err( - "I/O command set independent identify namespace", err); + nvme_show_err(err, + "I/O command set independent identify namespace"); return err; } @@ -4091,7 +4089,7 @@ static int id_ns_granularity(int argc, char **argv, struct command *acmd, struct err = nvme_identify_ns_granularity(hdl, granularity_list); if (err) { - nvme_show_err("identify namespace granularity", err); + nvme_show_err(err, "identify namespace granularity"); return err; } @@ -4144,7 +4142,7 @@ static int id_nvmset(int argc, char **argv, struct command *acmd, struct plugin cfg.nvmset_id, nvmset); err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("identify nvm set list", err); + nvme_show_err(err, "identify nvm set list"); return err; } @@ -4203,7 +4201,7 @@ static int id_uuid(int argc, char **argv, struct command *acmd, struct plugin *p err = nvme_identify_uuid_list(hdl, uuid_list); if (err) { - nvme_show_err("identify UUID list", err); + nvme_show_err(err, "identify UUID list"); return err; } @@ -4257,7 +4255,7 @@ static int id_iocs(int argc, char **argv, struct command *acmd, struct plugin *p nvme_init_identify_command_set_structure(&cmd, cfg.cntid, iocs); err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("NVMe Identify I/O Command Set", err); + nvme_show_err(err, "NVMe Identify I/O Command Set"); return err; } @@ -4309,7 +4307,7 @@ static int id_domain(int argc, char **argv, struct command *acmd, struct plugin nvme_init_identify_domain_list(&cmd, cfg.dom_id, id_domain); err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("NVMe Identify Domain List", err); + nvme_show_err(err, "NVMe Identify Domain List"); return err; } @@ -4403,7 +4401,7 @@ static int virtual_mgmt(int argc, char **argv, struct command *acmd, struct plug nvme_init_virtual_mgmt(&cmd, cfg.act, cfg.rt, cfg.cntlid, cfg.nr); err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("virt-mgmt", err); + nvme_show_err(err, "virt-mgmt"); return err; } @@ -4461,8 +4459,7 @@ static int primary_ctrl_caps(int argc, char **argv, struct command *acmd, struct nvme_init_identify_primary_ctrl_cap(&cmd, cfg.cntlid, caps); err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("identify primary controller capabilities", - err); + nvme_show_err(err, "identify primary controller capabilities"); return err; } @@ -4521,7 +4518,7 @@ static int list_secondary_ctrl(int argc, char **argv, struct command *acmd, stru nvme_init_identify_secondary_ctrl_list(&cmd, cfg.cntid, sc_list); err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("id secondary controller list", err); + nvme_show_err(err, "id secondary controller list"); return err; } @@ -4579,7 +4576,7 @@ static int wait_self_test(struct nvme_transport_handle *hdl) err = nvme_get_log_device_self_test(hdl, log); if (err) { printf("\n"); - nvme_show_err("self test log\n", err); + nvme_show_err(err, "self test log\n"); return err; } @@ -4623,7 +4620,7 @@ static void abort_self_test(struct nvme_transport_handle *hdl, bool ish, } err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("Device self-test", err); + nvme_show_err(err, "Device self-test"); return; } @@ -4692,7 +4689,7 @@ static int device_self_test(int argc, char **argv, struct command *acmd, struct err = nvme_get_log_device_self_test(hdl, log); if (err) { printf("\n"); - nvme_show_err("self test log\n", err); + nvme_show_err(err, "self test log\n"); } if (log->completion == 0) { @@ -4716,7 +4713,7 @@ static int device_self_test(int argc, char **argv, struct command *acmd, struct } err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("Device self-test", err); + nvme_show_err(err, "Device self-test"); goto check_abort; } @@ -4782,7 +4779,7 @@ static int self_test_log(int argc, char **argv, struct command *acmd, struct plu err = nvme_get_log_device_self_test(hdl, log); if (err) { - nvme_show_err("self test log", err); + nvme_show_err(err, "self test log"); return err; } @@ -5084,7 +5081,7 @@ static int fw_download_single(struct nvme_transport_handle *hdl, void *fw_buf, fprintf(stderr, "fw-download: error on offset 0x%08x/0x%08x\n", offset, fw_len); - nvme_show_err("fw-download", err); + nvme_show_err(err, "fw-download"); if (err > 0 && ovr) { /* * non-ignored ovr error: print a little extra info @@ -5315,7 +5312,7 @@ static void fw_commit_err(int err, __u8 action, __u8 slot, __u8 bpid) } } - nvme_show_err("fw-commit", err); + nvme_show_err(err, "fw-commit"); } static int fw_commit(int argc, char **argv, struct command *acmd, struct plugin *plugin) @@ -5635,7 +5632,7 @@ static int sanitize_cmd(int argc, char **argv, struct command *acmd, struct plug } err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("sanitize", err); + nvme_show_err(err, "sanitize"); return err; } @@ -5762,7 +5759,7 @@ static int nvme_get_single_property(struct nvme_transport_handle *hdl, return 0; } - nvme_show_err("get-property", err); + nvme_show_err(err, "get-property"); return err; } @@ -6189,7 +6186,7 @@ static int nvme_set_single_property(struct nvme_transport_handle *hdl, int offse nvme_init_set_property(&cmd, offset, value); err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("set-property", err); + nvme_show_err(err, "set-property"); return err; } @@ -6722,7 +6719,7 @@ static int format_cmd(int argc, char **argv, struct command *acmd, struct plugin if (err) { if (err > 0) fprintf(stderr, "identify failed\n"); - nvme_show_err("identify-namespace", err); + nvme_show_err(err, "identify-namespace"); return err; } @@ -6797,7 +6794,7 @@ static int format_cmd(int argc, char **argv, struct command *acmd, struct plugin } err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("format", err); + nvme_show_err(err, "format"); return err; } @@ -7102,7 +7099,7 @@ static int sec_send(int argc, char **argv, struct command *acmd, struct plugin * } err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("security-send", err); + nvme_show_err(err, "security-send"); return err; } @@ -7227,7 +7224,7 @@ static int dir_send(int argc, char **argv, struct command *acmd, struct plugin * cmd.cdw12 = dw12; err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("dir-send", err); + nvme_show_err(err, "dir-send"); return err; } @@ -7300,7 +7297,7 @@ static int write_uncor(int argc, char **argv, struct command *acmd, struct plugi cfg.block_count, cfg.dtype << 4, cfg.dspec); err = nvme_submit_io_passthru(hdl, &cmd); if (err) { - nvme_show_err("write uncorrectable", err); + nvme_show_err(err, "write uncorrectable"); return err; } @@ -7376,7 +7373,7 @@ static int get_pi_info(struct nvme_transport_handle *hdl, err = nvme_identify_ns(hdl, nsid, ns); if (err) { - nvme_show_err("identify namespace", err); + nvme_show_err(err, "identify namespace"); return err; } @@ -7435,7 +7432,7 @@ static int init_pi_tags(struct nvme_transport_handle *hdl, err = nvme_identify_ns(hdl, nsid, ns); if (err) { - nvme_show_err("identify namespace", err); + nvme_show_err(err, "identify namespace"); return err; } @@ -7574,7 +7571,7 @@ static int write_zeroes(int argc, char **argv, err = nvme_submit_io_passthru(hdl, &cmd); if (err) { - nvme_show_err("write-zeroes", err); + nvme_show_err(err, "write-zeroes"); return err; } @@ -7698,7 +7695,7 @@ static int dsm(int argc, char **argv, struct command *acmd, struct plugin *plugi sizeof(*dsm) * nb); err = nvme_submit_io_passthru(hdl, &cmd); if (err) { - nvme_show_err("data-set management", err); + nvme_show_err(err, "data-set management"); return err; } @@ -7916,7 +7913,7 @@ static int copy_cmd(int argc, char **argv, struct command *acmd, struct plugin * return err; err = nvme_submit_io_passthru(hdl, &cmd); if (err) { - nvme_show_err("NVMe Copy", err); + nvme_show_err(err, "NVMe Copy"); return err; } @@ -7966,7 +7963,7 @@ static int flush_cmd(int argc, char **argv, struct command *acmd, struct plugin err = nvme_flush(hdl, cfg.namespace_id); if (err) { - nvme_show_err("flush", err); + nvme_show_err(err, "flush"); return err; } @@ -8044,7 +8041,7 @@ static int resv_acquire(int argc, char **argv, struct command *acmd, struct plug false, cfg.rtype, cfg.crkey, cfg.prkey, payload); err = nvme_submit_io_passthru(hdl, &cmd); if (err) { - nvme_show_err("reservation acquire", err); + nvme_show_err(err, "reservation acquire"); return err; } @@ -8126,7 +8123,7 @@ static int resv_register(int argc, char **argv, struct command *acmd, struct plu payload); err = nvme_submit_io_passthru(hdl, &cmd); if (err) { - nvme_show_err("reservation register", err); + nvme_show_err(err, "reservation register"); return err; } @@ -8203,7 +8200,7 @@ static int resv_release(int argc, char **argv, struct command *acmd, struct plug cfg.rtype, cfg.crkey, payload); err = nvme_submit_io_passthru(hdl, &cmd); if (err) { - nvme_show_err("reservation release", err); + nvme_show_err(err, "reservation release"); return err; } @@ -8297,7 +8294,7 @@ static int resv_report(int argc, char **argv, struct command *acmd, struct plugi nvme_init_resv_report(&cmd, cfg.nsid, cfg.eds, false, status, size); err = nvme_submit_io_passthru(hdl, &cmd); if (err) { - nvme_show_err("reservation report", err); + nvme_show_err(err, "reservation report"); return err; } @@ -8617,7 +8614,7 @@ static int submit_io(int opcode, char *command, const char *desc, int argc, char if (cfg.latency) printf(" latency: %s: %llu us\n", command, elapsed_utime(start_time, end_time)); if (err) { - nvme_show_err("submit-io", err); + nvme_show_err(err, "submit-io"); return err; } @@ -8755,7 +8752,7 @@ static int verify_cmd(int argc, char **argv, struct command *acmd, struct plugin return err; err = nvme_submit_io_passthru(hdl, &cmd); if (err) { - nvme_show_err("verify", err); + nvme_show_err(err, "verify"); return err; } @@ -8841,7 +8838,7 @@ static int sec_recv(int argc, char **argv, struct command *acmd, struct plugin * cfg.secp, cfg.al, sec_buf, cfg.size); err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("security receive", err); + nvme_show_err(err, "security receive"); return err; } @@ -8931,7 +8928,7 @@ static int get_lba_status(int argc, char **argv, struct command *acmd, } err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("get lba status", err); + nvme_show_err(err, "get lba status"); return err; } @@ -9008,7 +9005,7 @@ static int capacity_mgmt(int argc, char **argv, struct command *acmd, struct plu } err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("capacity management", err); + nvme_show_err(err, "capacity management"); return err; } @@ -9125,7 +9122,7 @@ static int dir_receive(int argc, char **argv, struct command *acmd, struct plugi cmd.cdw12 = dw12; err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("dir-receive", err); + nvme_show_err(err, "dir-receive"); return err; } @@ -9217,7 +9214,7 @@ static int lockdown_cmd(int argc, char **argv, struct command *acmd, struct plug cfg.uuid); err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("lockdown", err); + nvme_show_err(err, "lockdown"); return err; } @@ -9470,7 +9467,7 @@ static int passthru(int argc, char **argv, bool admin, elapsed_utime(start_time, end_time)); if (err) { - nvme_show_err(__func__, err); + nvme_show_err(err, __func__); return err; } @@ -9714,7 +9711,7 @@ static int check_dhchap_key(int argc, char **argv, struct command *acmd, struct err = base64_decode(cfg.key + 10, strlen(cfg.key) - 11, decoded_key); if (err < 0) { - nvme_show_error("Base64 decoding failed, error %d", err); + nvme_show_error("Base64 decoding failed, error %d"); return err; } decoded_len = err; @@ -9929,7 +9926,7 @@ static int gen_tls_key(int argc, char **argv, struct command *acmd, struct plugi cfg.subsysnqn, cfg.version, cfg.hmac, raw_secret, key_len, &tls_key); if (err) { - nvme_show_error("Failed to insert key, error %d", err); + nvme_show_error("Failed to insert key, error %d"); return err; } @@ -10023,7 +10020,7 @@ static int check_tls_key(int argc, char **argv, struct command *acmd, struct plu err = nvme_import_tls_key(ctx, cfg.keydata, &decoded_len, &hmac, &decoded_key); if (err) { - nvme_show_error("Key decoding failed, error %d\n", err); + nvme_show_error("Key decoding failed, error %d\n"); return err; } @@ -10054,7 +10051,7 @@ static int check_tls_key(int argc, char **argv, struct command *acmd, struct plu hmac, decoded_key, decoded_len, &tls_key); if (err) { - nvme_show_error("Failed to insert key, error %d", err); + nvme_show_error("Failed to insert key, error %d"); return err; } printf("Inserted TLS key %08x\n", (unsigned int)tls_key); @@ -10521,7 +10518,7 @@ static int nvme_mi(int argc, char **argv, __u8 admin_opcode, const char *desc) err = nvme_submit_admin_passthru(hdl, &cmd); if (err) { - nvme_show_err("nmi_recv", err); + nvme_show_err(err, "nmi_recv"); return err; } @@ -10585,7 +10582,7 @@ static int get_mgmt_addr_list_log(int argc, char **argv, struct command *acmd, s err = nvme_get_log_mgmt_addr_list(hdl, ma_log, sizeof(*ma_log)); if (err) { - nvme_show_err("management address list log", err); + nvme_show_err(err, "management address list log"); return err; } @@ -10632,7 +10629,7 @@ static int get_rotational_media_info_log(int argc, char **argv, struct command * err = nvme_get_log_rotational_media_info(hdl, cfg.endgid, info, sizeof(*info)); if (err) { - nvme_show_err("rotational media info log", err); + nvme_show_err(err, "rotational media info log"); return err; } @@ -10714,7 +10711,7 @@ static int get_dispersed_ns_participating_nss_log(int argc, char **argv, struct err = get_dispersed_ns_psub(hdl, cfg.namespace_id, &log); if (err) { - nvme_show_err("dispersed ns participating nss log", err); + nvme_show_err(err, "dispersed ns participating nss log"); return err; } @@ -10772,7 +10769,7 @@ static int get_power_measurement_log(int argc, char **argv, struct command *acmd err = nvme_get_log_power_measurement(hdl, log, min_log_size); if (err) { - nvme_show_err("power-measurement-log", err); + nvme_show_err(err, "power-measurement-log"); return err; } @@ -10790,7 +10787,7 @@ static int get_power_measurement_log(int argc, char **argv, struct command *acmd err = nvme_get_log_power_measurement(hdl, log, log_size); if (err) { - nvme_show_err("power-measurement-log", err); + nvme_show_err(err, "power-measurement-log"); return err; } } @@ -10940,7 +10937,7 @@ static int get_reachability_groups_log(int argc, char **argv, struct command *ac err = get_reachability_groups(hdl, cfg.rgo, cfg.rae, &log, &len); if (err) { - nvme_show_err("reachability groups log", err); + nvme_show_err(err, "reachability groups log"); return err; } @@ -11051,7 +11048,7 @@ static int get_reachability_associations_log(int argc, char **argv, struct comma err = get_reachability_associations(hdl, cfg.rao, cfg.rae, &log, &len); if (err) { - nvme_show_err("reachability associations log", err); + nvme_show_err(err, "reachability associations log"); return err; } @@ -11132,7 +11129,7 @@ static int get_host_discovery_log(int argc, char **argv, struct command *acmd, s err = get_host_discovery(hdl, cfg.allhoste, cfg.rae, &log); if (err) { - nvme_show_err("host discovery log", err); + nvme_show_err(err, "host discovery log"); return err; } @@ -11206,7 +11203,7 @@ static int get_ave_discovery_log(int argc, char **argv, struct command *acmd, st err = get_ave_discovery(hdl, cfg.rae, &log); if (err) { - nvme_show_err("ave discovery log", err); + nvme_show_err(err, "ave discovery log"); return err; } @@ -11282,7 +11279,7 @@ static int get_pull_model_ddc_req_log(int argc, char **argv, struct command *acm err = get_pull_model_ddc_req(hdl, cfg.rae, &log); if (err) { - nvme_show_err("pull model ddc req log", err); + nvme_show_err(err, "pull model ddc req log"); return err; } diff --git a/plugins/feat/feat-nvme.c b/plugins/feat/feat-nvme.c index f14a51929f..f474dd71c9 100644 --- a/plugins/feat/feat-nvme.c +++ b/plugins/feat/feat-nvme.c @@ -83,20 +83,18 @@ static int feat_get_nsid(struct nvme_transport_handle *hdl, __u32 nsid, err = nvme_get_features(hdl, nsid, fid, sel, cdw11, uidx, buf, len, &result); + if (err) { + nvme_show_err(err, "Get %s", feat); + return err; + } nvme_show_init(); - if (!err) { - nvme_feature_show(fid, sel, result); - if (NVME_CHECK(sel, GET_FEATURES_SEL, SUPPORTED)) - nvme_show_select_result(fid, result); - else - nvme_feature_show_fields(fid, result, buf); - } else if (err > 0) { - nvme_show_status(err); - } else { - nvme_show_error("Get %s: %s", feat, nvme_strerror(errno)); - } + nvme_feature_show(fid, sel, result); + if (NVME_CHECK(sel, GET_FEATURES_SEL, SUPPORTED)) + nvme_show_select_result(fid, result); + else + nvme_feature_show_fields(fid, result, buf); nvme_show_finish(); @@ -119,17 +117,16 @@ static int power_mgmt_set(struct nvme_transport_handle *hdl, const __u8 fid, err = nvme_set_features(hdl, 0, fid, sv, cdw11, 0, 0, 0, 0, NULL, 0, &result); + if (err) { + nvme_show_err(err, "Set %s", power_mgmt_feat); + return err; + } + nvme_show_init(); - if (err > 0) { - nvme_show_status(err); - } else if (err < 0) { - nvme_show_perror("Set %s", power_mgmt_feat); - } else { - nvme_show_result("Set %s: 0x%04x (%s)", power_mgmt_feat, cdw11, - sv ? "Save" : "Not save"); - nvme_feature_show_fields(fid, cdw11, NULL); - } + nvme_show_result("Set %s: 0x%04x (%s)", power_mgmt_feat, cdw11, + sv ? "Save" : "Not save"); + nvme_feature_show_fields(fid, cdw11, NULL); nvme_show_finish(); @@ -211,18 +208,16 @@ static int perfc_set(struct nvme_transport_handle *hdl, __u8 fid, __u32 cdw11, err = nvme_set_features(hdl, 0, fid, sv, cdw11, 0, 0, 0, 0, &data, sizeof(data), &result); + if (err) { + nvme_show_err(err, "Set %s", perfc_feat); + return err; + } nvme_show_init(); - if (err > 0) { - nvme_show_status(err); - } else if (err < 0) { - nvme_show_perror("Set %s", perfc_feat); - } else { - nvme_show_result("Set %s: 0x%04x (%s)", perfc_feat, cdw11, - sv ? "Save" : "Not save"); - nvme_feature_show_fields(fid, cdw11, NULL); - } + nvme_show_result("Set %s: 0x%04x (%s)", perfc_feat, cdw11, + sv ? "Save" : "Not save"); + nvme_feature_show_fields(fid, cdw11, NULL); nvme_show_finish(); @@ -283,18 +278,16 @@ static int hctm_set(struct nvme_transport_handle *hdl, const __u8 fid, err = nvme_set_features(hdl, 0, fid, sv, cdw11, 0, 0, 0, 0, NULL, 0, &result); + if (err) { + nvme_show_err(err, "Set %s", hctm_feat); + return err; + } nvme_show_init(); - if (err > 0) { - nvme_show_status(err); - } else if (err < 0) { - nvme_show_perror("Set %s", hctm_feat); - } else { - nvme_show_result("Set %s: 0x%04x (%s)", hctm_feat, cdw11, - sv ? "Save" : "Not save"); - nvme_feature_show_fields(fid, cdw11, NULL); - } + nvme_show_result("Set %s: 0x%04x (%s)", hctm_feat, cdw11, + sv ? "Save" : "Not save"); + nvme_feature_show_fields(fid, cdw11, NULL); nvme_show_finish(); @@ -347,17 +340,16 @@ static int timestamp_set(struct nvme_transport_handle *hdl, const __u8 fid, err = nvme_set_features(hdl, 0, fid, sv, 0, 0, 0, 0, 0, &ts, sizeof(ts), &result); + if (err) { + nvme_show_err(err, "Set %s", timestamp_feat); + return err; + } nvme_show_init(); - if (err > 0) { - nvme_show_status(err); - } else if (err < 0) { - nvme_show_perror("Set %s", timestamp_feat); - } else { - nvme_show_result("Set %s: (%s)", timestamp_feat, sv ? "Save" : "Not save"); - nvme_feature_show_fields(fid, 0, (unsigned char *)&ts); - } + nvme_show_result("Set %s: (%s)", timestamp_feat, + sv ? "Save" : "Not save"); + nvme_feature_show_fields(fid, 0, (unsigned char *)&ts); nvme_show_finish(); @@ -426,20 +418,19 @@ static int temp_thresh_set(struct nvme_transport_handle *hdl, const __u8 fid, nvme_init_set_features_temp_thresh(&cmd, sv, cfg->tmpth, cfg->tmpsel, cfg->thsel, cfg->tmpthh); err = nvme_submit_admin_passthru(hdl, &cmd); + if (err) { + nvme_show_err(err, "Set %s", temp_thresh_feat); + return err; + } nvme_show_init(); - if (err > 0) { - nvme_show_status(err); - } else if (err < 0) { - nvme_show_perror("Set %s", temp_thresh_feat); - } else { - nvme_show_result("Set %s: (%s)", temp_thresh_feat, sv ? "Save" : "Not save"); - nvme_feature_show_fields(fid, NVME_SET(cfg->tmpth, FEAT_TT_TMPTH) | - NVME_SET(cfg->tmpsel, FEAT_TT_TMPSEL) | - NVME_SET(cfg->thsel, FEAT_TT_THSEL) | - NVME_SET(cfg->tmpthh, FEAT_TT_TMPTHH), NULL); - } + nvme_show_result("Set %s: (%s)", temp_thresh_feat, + sv ? "Save" : "Not save"); + nvme_feature_show_fields(fid, NVME_SET(cfg->tmpth, FEAT_TT_TMPTH) | + NVME_SET(cfg->tmpsel, FEAT_TT_TMPSEL) | + NVME_SET(cfg->thsel, FEAT_TT_THSEL) | + NVME_SET(cfg->tmpthh, FEAT_TT_TMPTHH), NULL); nvme_show_finish(); @@ -513,20 +504,21 @@ static int arbitration_set(struct nvme_transport_handle *hdl, const __u8 fid, nvme_init_set_features_arbitration(&cmd, sv, cfg->ab, cfg->lpw, cfg->mpw, cfg->hpw); err = nvme_submit_admin_passthru(hdl, &cmd); + if (err) { + nvme_show_err(err, "Set %s", arbitration_feat); + return err; + } nvme_show_init(); - if (err > 0) { - nvme_show_status(err); - } else if (err < 0) { - nvme_show_perror("Set %s", arbitration_feat); - } else { - nvme_show_result("Set %s: (%s)", arbitration_feat, sv ? "Save" : "Not save"); - nvme_feature_show_fields(fid, NVME_SET(cfg->ab, FEAT_ARBITRATION_BURST) | - NVME_SET(cfg->lpw, FEAT_ARBITRATION_LPW) | - NVME_SET(cfg->mpw, FEAT_ARBITRATION_MPW) | - NVME_SET(cfg->hpw, FEAT_ARBITRATION_HPW), NULL); - } + nvme_show_result("Set %s: (%s)", arbitration_feat, + sv ? "Save" : "Not save"); + nvme_feature_show_fields(fid, + NVME_SET(cfg->ab, FEAT_ARBITRATION_BURST) | + NVME_SET(cfg->lpw, FEAT_ARBITRATION_LPW) | + NVME_SET(cfg->mpw, FEAT_ARBITRATION_MPW) | + NVME_SET(cfg->hpw, FEAT_ARBITRATION_HPW), + NULL); nvme_show_finish(); @@ -572,18 +564,16 @@ static int volatile_wc_set(struct nvme_transport_handle *hdl, const __u8 fid, err = nvme_set_features(hdl, 0, fid, sv, cdw11, 0, 0, 0, 0, NULL, 0, &result); + if (err) { + nvme_show_err(err, "Set %s", volatile_wc_feat); + return err; + } nvme_show_init(); - if (err > 0) { - nvme_show_status(err); - } else if (err < 0) { - nvme_show_perror("Set %s", volatile_wc_feat); - } else { - nvme_show_result("Set %s: 0x%04x (%s)", volatile_wc_feat, cdw11, - sv ? "Save" : "Not save"); - nvme_feature_show_fields(fid, cdw11, NULL); - } + nvme_show_result("Set %s: 0x%04x (%s)", volatile_wc_feat, cdw11, + sv ? "Save" : "Not save"); + nvme_feature_show_fields(fid, cdw11, NULL); nvme_show_finish(); @@ -631,18 +621,16 @@ static int power_limit_set(struct nvme_transport_handle *hdl, const __u8 fid, err = nvme_set_features(hdl, 0, fid, sv, 0, 0, cdw13, uidx, 0, NULL, 0, &result); + if (err) { + nvme_show_err(err, "Set %s", power_limit_feat); + return err; + } nvme_show_init(); - if (err > 0) { - nvme_show_status(err); - } else if (err < 0) { - nvme_show_perror("Set %s", power_limit_feat); - } else { - nvme_show_result("Set %s: 0x%04x (%s)", power_limit_feat, cdw13, - sv ? "Save" : "Not save"); - nvme_feature_show_fields(fid, cdw13, NULL); - } + nvme_show_result("Set %s: 0x%04x (%s)", power_limit_feat, cdw13, + sv ? "Save" : "Not save"); + nvme_feature_show_fields(fid, cdw13, NULL); nvme_show_finish(); @@ -703,18 +691,16 @@ static int power_thresh_set(struct nvme_transport_handle *hdl, const __u8 fid, err = nvme_set_features(hdl, 0, fid, sv, cdw11, 0, 0, uidx, 0, NULL, 0, &result); + if (err) { + nvme_show_err(err, "Set %s", power_thresh_feat); + return err; + } nvme_show_init(); - if (err > 0) { - nvme_show_status(err); - } else if (err < 0) { - nvme_show_perror("Set %s", power_thresh_feat); - } else { - nvme_show_result("Set %s: 0x%04x (%s)", power_thresh_feat, - cdw11, sv ? "Save" : "Not save"); - nvme_feature_show_fields(fid, cdw11, NULL); - } + nvme_show_result("Set %s: 0x%04x (%s)", power_thresh_feat, + cdw11, sv ? "Save" : "Not save"); + nvme_feature_show_fields(fid, cdw11, NULL); nvme_show_finish(); @@ -783,18 +769,16 @@ static int power_meas_set(struct nvme_transport_handle *hdl, const __u8 fid, err = nvme_set_features(hdl, 0, fid, sv, cdw11, 0, 0, uidx, 0, NULL, 0, &result); + if (err) { + nvme_show_err(err, "Set %s", power_meas_feat); + return err; + } nvme_show_init(); - if (err > 0) { - nvme_show_status(err); - } else if (err < 0) { - nvme_show_perror("Set %s", power_meas_feat); - } else { - nvme_show_result("Set %s: 0x%04x (%s)", power_meas_feat, cdw11, - sv ? "Save" : "Not save"); - nvme_feature_show_fields(fid, cdw11, NULL); - } + nvme_show_result("Set %s: 0x%04x (%s)", power_meas_feat, cdw11, + sv ? "Save" : "Not save"); + nvme_feature_show_fields(fid, cdw11, NULL); nvme_show_finish(); @@ -857,18 +841,16 @@ static int err_recovery_set(struct nvme_transport_handle *hdl, const __u8 fid, err = nvme_set_features(hdl, nsid, fid, sv, cdw11, 0, 0, 0, 0, NULL, 0, &result); + if (err) { + nvme_show_err(err, "Set %s", err_recovery_feat); + return err; + } nvme_show_init(); - if (err > 0) { - nvme_show_status(err); - } else if (err < 0) { - nvme_show_perror("Set %s", err_recovery_feat); - } else { - nvme_show_result("Set %s: 0x%04x (%s)", err_recovery_feat, - cdw11, sv ? "Save" : "Not save"); - nvme_feature_show_fields(fid, cdw11, NULL); - } + nvme_show_result("Set %s: 0x%04x (%s)", err_recovery_feat, cdw11, + sv ? "Save" : "Not save"); + nvme_feature_show_fields(fid, cdw11, NULL); nvme_show_finish(); @@ -944,18 +926,16 @@ static int num_queues_set(struct nvme_transport_handle *hdl, const __u8 fid, err = nvme_set_features(hdl, 0, fid, sv, cdw11, 0, 0, 0, 0, NULL, 0, &result); + if (err) { + nvme_show_err(err, "Set %s", num_queues_feat); + return err; + } nvme_show_init(); - if (err > 0) { - nvme_show_status(err); - } else if (err < 0) { - nvme_show_perror("Set %s", num_queues_feat); - } else { - nvme_show_result("Set %s: 0x%04x (%s)", num_queues_feat, - cdw11, sv ? "Save" : "Not save"); - nvme_feature_show_fields(fid, cdw11, NULL); - } + nvme_show_result("Set %s: 0x%04x (%s)", num_queues_feat, cdw11, + sv ? "Save" : "Not save"); + nvme_feature_show_fields(fid, cdw11, NULL); nvme_show_finish(); diff --git a/plugins/solidigm/solidigm-telemetry.c b/plugins/solidigm/solidigm-telemetry.c index 13d2b302e5..f6d5547eef 100644 --- a/plugins/solidigm/solidigm-telemetry.c +++ b/plugins/solidigm/solidigm-telemetry.c @@ -169,7 +169,7 @@ int solidigm_get_telemetry_log(int argc, char **argv, struct command *acmd, stru err = nvme_get_telemetry_max(hdl, NULL, &max_data_tx); if (err) { - nvme_show_err("identify_ctrl", err); + nvme_show_err(err, "identify_ctrl"); return err; } power2 = max_data_tx / NVME_LOG_PAGE_PDU_SIZE; @@ -181,7 +181,7 @@ int solidigm_get_telemetry_log(int argc, char **argv, struct command *acmd, stru err = sldgm_dynamic_telemetry(hdl, cfg.host_gen, cfg.ctrl_init, true, mdts, cfg.data_area, &tlog, &tl.log_size); if (err) { - nvme_show_err("get-telemetry-log", err); + nvme_show_err(err, "get-telemetry-log"); return err; } }