From: Jeremy Kerr Date: Wed, 13 Jul 2022 03:07:51 +0000 (+0800) Subject: tree: Add dev_fd() helper X-Git-Tag: v2.2~53 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=d986de55cdd9b5d0e88e9c99390d0caa666fbc93;p=users%2Fsagi%2Fnvme-cli.git tree: Add dev_fd() helper We'll want to abstract the access to the direct-ioctl fd in a future change, so add a simple helper for access to the fd member of struct nvme_dev. Signed-off-by: Jeremy Kerr --- diff --git a/nvme-rpmb.c b/nvme-rpmb.c index b460510f..c2845fb0 100644 --- a/nvme-rpmb.c +++ b/nvme-rpmb.c @@ -891,7 +891,7 @@ int rpmb_cmd_option(int argc, char **argv, struct command *cmd, struct plugin *p return err; /* before parsing commands, check if controller supports any RPMB targets */ - err = nvme_identify_ctrl(dev->fd, &ctrl); + err = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (err) goto out; @@ -960,14 +960,15 @@ int rpmb_cmd_option(int argc, char **argv, struct command *cmd, struct plugin *p switch (cfg.opt) { case RPMB_REQ_READ_WRITE_CNTR: - err = rpmb_read_write_counter(dev->fd, cfg.target, + err = rpmb_read_write_counter(dev_fd(dev), cfg.target, &write_cntr); if (err == 0) printf("Write Counter is: %u\n", write_cntr); break; case RPMB_REQ_AUTH_DCB_READ: - write_cntr = rpmb_read_config_block(dev->fd, &msg_buf); + write_cntr = rpmb_read_config_block(dev_fd(dev), + &msg_buf); if (msg_buf == NULL) { fprintf(stderr, "failed read config blk\n"); goto out; @@ -999,7 +1000,7 @@ int rpmb_cmd_option(int argc, char **argv, struct command *cmd, struct plugin *p msg_size); break; } - err = rpmb_auth_data_read(dev->fd, cfg.target, + err = rpmb_auth_data_read(dev_fd(dev), cfg.target, cfg.address, &msg_buf, cfg.blocks, (regs.access_size + 1)); @@ -1020,7 +1021,7 @@ int rpmb_cmd_option(int argc, char **argv, struct command *cmd, struct plugin *p } else if ((cfg.blocks * 512) < msg_size) { msg_size = cfg.blocks * 512; } - err = rpmb_auth_data_write(dev->fd, cfg.target, + err = rpmb_auth_data_write(dev_fd(dev), cfg.target, cfg.address, ((regs.access_size + 1) * 512), msg_buf, msg_size, @@ -1032,12 +1033,12 @@ int rpmb_cmd_option(int argc, char **argv, struct command *cmd, struct plugin *p break; case RPMB_REQ_AUTH_DCB_WRITE: - err = rpmb_write_config_block(dev->fd, msg_buf, + err = rpmb_write_config_block(dev_fd(dev), msg_buf, key_buf, key_size); break; case RPMB_REQ_AUTH_KEY_PROGRAM: - err = rpmb_program_auth_key(dev->fd, cfg.target, + err = rpmb_program_auth_key(dev_fd(dev), cfg.target, key_buf, key_size); break; default: diff --git a/nvme.c b/nvme.c index 5d903bfd..50099a92 100644 --- a/nvme.c +++ b/nvme.c @@ -223,7 +223,6 @@ static int open_dev(struct nvme_dev **devp, char *devstr, int flags) dev = calloc(1, sizeof(*dev)); if (!dev) return -1; - dev->name = basename(devstr); err = open(devstr, flags); if (err < 0) { @@ -232,7 +231,7 @@ static int open_dev(struct nvme_dev **devp, char *devstr, int flags) } dev->fd = err; - err = fstat(dev->fd, &dev->stat); + err = fstat(dev_fd(dev), &dev->stat); if (err < 0) { perror(devstr); goto err_close; @@ -247,7 +246,7 @@ static int open_dev(struct nvme_dev **devp, char *devstr, int flags) return 0; err_close: - close(dev->fd); + close(dev_fd(dev)); err_free: free(dev); return err; @@ -317,7 +316,7 @@ enum nvme_print_flags validate_output_format(const char *format) void dev_close(struct nvme_dev *dev) { - close(dev->fd); + close(dev_fd(dev)); free(dev); } @@ -369,7 +368,8 @@ static int get_smart_log(int argc, char **argv, struct command *cmd, struct plug if (cfg.human_readable) flags |= VERBOSE; - err = nvme_get_log_smart(dev->fd, cfg.namespace_id, false, &smart_log); + err = nvme_get_log_smart(dev_fd(dev), cfg.namespace_id, false, + &smart_log); if (!err) nvme_show_smart_log(&smart_log, cfg.namespace_id, dev->name, flags); @@ -421,7 +421,7 @@ static int get_ana_log(int argc, char **argv, struct command *cmd, if (flags < 0) goto close_fd; - err = nvme_identify_ctrl(dev->fd, &ctrl); + err = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (err) { fprintf(stderr, "ERROR : nvme_identify_ctrl() failed: %s\n", nvme_strerror(errno)); @@ -442,7 +442,8 @@ static int get_ana_log(int argc, char **argv, struct command *cmd, lsp = cfg.groups ? NVME_LOG_ANA_LSP_RGO_GROUPS_ONLY : NVME_LOG_ANA_LSP_RGO_NAMESPACES; - err = nvme_get_log_ana(dev->fd, lsp, true, 0, ana_log_len, ana_log); + err = nvme_get_log_ana(dev_fd(dev), lsp, true, 0, ana_log_len, + ana_log); if (!err) { nvme_show_ana_log(ana_log, dev->name, flags, ana_log_len); } else if (err > 0) @@ -512,13 +513,13 @@ static int get_telemetry_log(int argc, char **argv, struct command *cmd, } if (cfg.ctrl_init) - err = nvme_get_ctrl_telemetry(dev->fd, true, &log, + err = nvme_get_ctrl_telemetry(dev_fd(dev), true, &log, cfg.data_area, &total_size); else if (cfg.host_gen) - err = nvme_get_new_host_telemetry(dev->fd, &log, + err = nvme_get_new_host_telemetry(dev_fd(dev), &log, cfg.data_area, &total_size); else - err = nvme_get_host_telemetry(dev->fd, &log, + err = nvme_get_host_telemetry(dev_fd(dev), &log, cfg.data_area, &total_size); if (err < 0) { @@ -598,7 +599,7 @@ static int get_endurance_log(int argc, char **argv, struct command *cmd, struct if (flags < 0) goto close_dev; - err = nvme_get_log_endurance_group(dev->fd, cfg.group_id, + err = nvme_get_log_endurance_group(dev_fd(dev), cfg.group_id, &endurance_log); if (!err) nvme_show_endurance_log(&endurance_log, cfg.group_id, @@ -704,15 +705,16 @@ static int get_effects_log(int argc, char **argv, struct command *cmd, struct pl other_command_sets_supported = NVME_CAP_CSS(cap) & NVME_CAP_CSS_CSI; if (nvme_command_set_supported) - err = collect_effects_log(dev->fd, NVME_CSI_NVM, + err = collect_effects_log(dev_fd(dev), NVME_CSI_NVM, &log_pages, flags); if (!err && other_command_sets_supported) - err = collect_effects_log(dev->fd, NVME_CSI_ZNS, + err = collect_effects_log(dev_fd(dev), NVME_CSI_ZNS, &log_pages, flags); } else { - err = collect_effects_log(dev->fd, cfg.csi, &log_pages, flags); + err = collect_effects_log(dev_fd(dev), cfg.csi, &log_pages, + flags); } if (!err) @@ -769,7 +771,7 @@ static int get_supported_log_pages(int argc, char **argv, struct command *cmd, if (cfg.verbose) flags |= VERBOSE; - err = nvme_get_log_supported_log_pages(dev->fd, false, &supports); + err = nvme_get_log_supported_log_pages(dev_fd(dev), false, &supports); if (!err) nvme_show_supported_log(&supports, dev->name, flags); else if (err > 0) @@ -832,7 +834,7 @@ static int get_error_log(int argc, char **argv, struct command *cmd, struct plug goto close_dev; } - err = nvme_identify_ctrl(dev->fd, &ctrl); + err = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (err < 0) { perror("identify controller"); goto close_dev; @@ -849,7 +851,7 @@ static int get_error_log(int argc, char **argv, struct command *cmd, struct plug goto close_dev; } - err = nvme_get_log_error(dev->fd, cfg.log_entries, false, err_log); + err = nvme_get_log_error(dev_fd(dev), cfg.log_entries, false, err_log); if (!err) nvme_show_error_log(err_log, cfg.log_entries, dev->name, flags); @@ -900,7 +902,7 @@ static int get_fw_log(int argc, char **argv, struct command *cmd, struct plugin if (cfg.raw_binary) flags = BINARY; - err = nvme_get_log_fw_slot(dev->fd, false, &fw_log); + err = nvme_get_log_fw_slot(dev_fd(dev), false, &fw_log); if (!err) nvme_show_fw_log(&fw_log, dev->name, flags); else if (err > 0) @@ -950,7 +952,8 @@ static int get_changed_ns_list_log(int argc, char **argv, struct command *cmd, s if (cfg.raw_binary) flags = BINARY; - err = nvme_get_log_changed_ns_list(dev->fd, true, &changed_ns_list_log); + err = nvme_get_log_changed_ns_list(dev_fd(dev), true, + &changed_ns_list_log); if (!err) nvme_show_changed_ns_list_log(&changed_ns_list_log, dev->name, flags); @@ -1007,7 +1010,7 @@ static int get_pred_lat_per_nvmset_log(int argc, char **argv, if (cfg.raw_binary) flags = BINARY; - err = nvme_get_log_predictable_lat_nvmset(dev->fd, cfg.nvmset_id, + err = nvme_get_log_predictable_lat_nvmset(dev_fd(dev), cfg.nvmset_id, &plpns_log); if (!err) nvme_show_predictable_latency_per_nvmset(&plpns_log, @@ -1080,7 +1083,7 @@ static int get_pred_lat_event_agg_log(int argc, char **argv, goto close_dev; } - err = nvme_identify_ctrl(dev->fd, &ctrl); + err = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (err < 0) { fprintf(stderr, "identify controller: %s\n", nvme_strerror(errno)); @@ -1098,8 +1101,8 @@ static int get_pred_lat_event_agg_log(int argc, char **argv, goto close_dev; } - err = nvme_get_log_predictable_lat_event(dev->fd, cfg.rae, 0, log_size, - pea_log); + err = nvme_get_log_predictable_lat_event(dev_fd(dev), cfg.rae, 0, + log_size, pea_log); if (!err) nvme_show_predictable_latency_event_agg_log(pea_log, cfg.log_entries, log_size, dev->name, flags); @@ -1171,8 +1174,8 @@ static int get_persistent_event_log(int argc, char **argv, goto close_dev; } - err = nvme_get_log_persistent_event(dev->fd, cfg.action, - sizeof(*pevent), pevent); + err = nvme_get_log_persistent_event(dev_fd(dev), cfg.action, + sizeof(*pevent), pevent); if (err < 0) { fprintf(stderr, "persistent event log: %s\n", nvme_strerror(errno)); @@ -1209,11 +1212,11 @@ static int get_persistent_event_log(int argc, char **argv, err = -ENOMEM; goto free_pevent; } - err = nvme_get_log_persistent_event(dev->fd, cfg.action, - cfg.log_len, pevent_log_info); + err = nvme_get_log_persistent_event(dev_fd(dev), cfg.action, + cfg.log_len, pevent_log_info); if (!err) { - err = nvme_get_log_persistent_event(dev->fd, cfg.action, - sizeof(*pevent), pevent); + err = nvme_get_log_persistent_event(dev_fd(dev), cfg.action, + sizeof(*pevent), pevent); if (err < 0) { fprintf(stderr, "persistent event log: %s\n", nvme_strerror(errno)); @@ -1303,7 +1306,7 @@ static int get_endurance_event_agg_log(int argc, char **argv, goto close_dev; } - err = nvme_identify_ctrl(dev->fd, &ctrl); + err = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (err < 0) { fprintf(stderr, "identify controller: %s\n", nvme_strerror(errno)); @@ -1322,8 +1325,8 @@ static int get_endurance_event_agg_log(int argc, char **argv, goto close_dev; } - err = nvme_get_log_endurance_grp_evt(dev->fd, cfg.rae, 0, log_size, - endurance_log); + err = nvme_get_log_endurance_grp_evt(dev_fd(dev), cfg.rae, 0, + log_size, endurance_log); if (!err) nvme_show_endurance_group_event_agg_log(endurance_log, cfg.log_entries, log_size, dev->name, flags); @@ -1377,7 +1380,8 @@ static int get_lba_status_log(int argc, char **argv, if (flags < 0) goto close_dev; - err = nvme_get_log_lba_status(dev->fd, true, 0, sizeof(__u32), &lslplen); + err = nvme_get_log_lba_status(dev_fd(dev), true, 0, sizeof(__u32), + &lslplen); if (err < 0) { fprintf(stderr, "lba status log page: %s\n", nvme_strerror(errno)); @@ -1393,7 +1397,8 @@ static int get_lba_status_log(int argc, char **argv, goto close_dev; } - err = nvme_get_log_lba_status(dev->fd, cfg.rae, 0, lslplen, lab_status); + err = nvme_get_log_lba_status(dev_fd(dev), cfg.rae, 0, lslplen, + lab_status); if (!err) nvme_show_lba_status_log(lab_status, lslplen, dev->name, flags); else if (err > 0) @@ -1443,7 +1448,7 @@ static int get_resv_notif_log(int argc, char **argv, if (flags < 0) goto close_dev; - err = nvme_get_log_reservation(dev->fd, false, &resv); + err = nvme_get_log_reservation(dev_fd(dev), false, &resv); if (!err) nvme_show_resv_notif_log(&resv, dev->name, flags); else if (err > 0) @@ -1521,7 +1526,7 @@ static int get_boot_part_log(int argc, char **argv, struct command *cmd, struct goto close_dev; } - err = nvme_get_log_boot_partition(dev->fd, false, cfg.lsp, + err = nvme_get_log_boot_partition(dev_fd(dev), false, cfg.lsp, sizeof(boot), &boot); if (err < 0) { fprintf(stderr, "boot partition log: %s\n", @@ -1539,7 +1544,7 @@ static int get_boot_part_log(int argc, char **argv, struct command *cmd, struct goto close_output; } - err = nvme_get_log_boot_partition(dev->fd, false, cfg.lsp, + err = nvme_get_log_boot_partition(dev_fd(dev), false, cfg.lsp, sizeof(boot) + bpsz, (struct nvme_boot_partition *)bp_log); if (!err) @@ -1610,7 +1615,7 @@ static int get_media_unit_stat_log(int argc, char **argv, struct command *cmd, if (cfg.raw_binary) flags = BINARY; - err = nvme_get_log_media_unit_stat(dev->fd, cfg.domainid, &mus); + err = nvme_get_log_media_unit_stat(dev_fd(dev), cfg.domainid, &mus); if (!err) nvme_show_media_unit_stat_log(&mus, flags); else if (err > 0) @@ -1666,7 +1671,8 @@ static int get_supp_cap_config_log(int argc, char **argv, struct command *cmd, if (cfg.raw_binary) flags = BINARY; - err = nvme_get_log_support_cap_config_list(dev->fd, cfg.domainid, &cap_log); + err = nvme_get_log_support_cap_config_list(dev_fd(dev), cfg.domainid, + &cap_log); if (!err) nvme_show_supported_cap_config_log(&cap_log, flags); else if (err > 0) @@ -1783,7 +1789,7 @@ static int get_log(int argc, char **argv, struct command *cmd, struct plugin *pl struct nvme_get_log_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .lid = cfg.log_id, .nsid = cfg.namespace_id, .lpo = cfg.lpo, @@ -1864,7 +1870,7 @@ static int sanitize_log(int argc, char **argv, struct command *command, struct p if (cfg.human_readable) flags |= VERBOSE; - err = nvme_get_log_sanitize(dev->fd, cfg.rae, &sanitize_log); + err = nvme_get_log_sanitize(dev_fd(dev), cfg.rae, &sanitize_log); if (!err) nvme_show_sanitize_log(&sanitize_log, dev->name, flags); else if (err > 0) @@ -1914,7 +1920,8 @@ static int get_fid_support_effects_log(int argc, char **argv, struct command *cm if (cfg.human_readable) flags |= VERBOSE; - err = nvme_get_log_fid_supported_effects(dev->fd, false, &fid_support_log); + err = nvme_get_log_fid_supported_effects(dev_fd(dev), false, + &fid_support_log); if (!err) nvme_show_fid_support_effects_log(&fid_support_log, dev->name, flags); @@ -1965,7 +1972,8 @@ static int get_mi_cmd_support_effects_log(int argc, char **argv, struct command if (cfg.human_readable) flags |= VERBOSE; - err = nvme_get_log_mi_cmd_supported_effects(dev->fd, false, &mi_cmd_support_log); + err = nvme_get_log_mi_cmd_supported_effects(dev_fd(dev), false, + &mi_cmd_support_log); if (!err) nvme_show_mi_cmd_support_effects_log(&mi_cmd_support_log, dev->name, flags); @@ -2025,9 +2033,11 @@ static int list_ctrl(int argc, char **argv, struct command *cmd, struct plugin * } if (cfg.namespace_id == NVME_NSID_NONE) - err = nvme_identify_ctrl_list(dev->fd, cfg.cntid, cntlist); + err = nvme_identify_ctrl_list(dev_fd(dev), cfg.cntid, + cntlist); else - err = nvme_identify_nsid_ctrl_list(dev->fd, cfg.namespace_id, + err = nvme_identify_nsid_ctrl_list(dev_fd(dev), + cfg.namespace_id, cfg.cntid, cntlist); if (!err) nvme_show_list_ctrl(cntlist, flags); @@ -2098,7 +2108,7 @@ static int list_ns(int argc, char **argv, struct command *cmd, struct plugin *pl struct nvme_identify_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .timeout = NVME_DEFAULT_IOCTL_TIMEOUT, .data = &ns_list, .nsid = cfg.namespace_id - 1. @@ -2174,7 +2184,8 @@ static int id_ns_lba_format(int argc, char **argv, struct command *cmd, struct p if (cfg.verbose) flags |= VERBOSE; - err = nvme_identify_ns_csi_user_data_format(dev->fd, cfg.lba_format_index, + err = nvme_identify_ns_csi_user_data_format(dev_fd(dev), + cfg.lba_format_index, cfg.uuid_index, NVME_CSI_NVM, &ns); if (!err) nvme_show_id_ns(&ns, 0, cfg.lba_format_index, true, flags); @@ -2233,7 +2244,8 @@ static int id_endurance_grp_list(int argc, char **argv, struct command *cmd, goto close_dev; } - err = nvme_identify_endurance_group_list(dev->fd, cfg.endgrp_id, endgrp_list); + err = nvme_identify_endurance_group_list(dev_fd(dev), cfg.endgrp_id, + endgrp_list); if (!err) nvme_show_endurance_group_list(endgrp_list, flags); else if (err > 0) @@ -2283,7 +2295,7 @@ static int delete_ns(int argc, char **argv, struct command *cmd, struct plugin * goto ret; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); @@ -2291,7 +2303,7 @@ static int delete_ns(int argc, char **argv, struct command *cmd, struct plugin * } } - err = nvme_ns_mgmt_delete(dev->fd, cfg.namespace_id); + err = nvme_ns_mgmt_delete(dev_fd(dev), cfg.namespace_id); if (!err) printf("%s: Success, deleted nsid:%d\n", cmd->name, cfg.namespace_id); @@ -2361,9 +2373,11 @@ static int nvme_attach_ns(int argc, char **argv, int attach, const char *desc, s nvme_init_ctrl_list(&cntlist, num, ctrlist); if (attach) - err = nvme_ns_attach_ctrls(dev->fd, cfg.namespace_id, &cntlist); + err = nvme_ns_attach_ctrls(dev_fd(dev), cfg.namespace_id, + &cntlist); else - err = nvme_ns_detach_ctrls(dev->fd, cfg.namespace_id, &cntlist); + err = nvme_ns_detach_ctrls(dev_fd(dev), cfg.namespace_id, + &cntlist); if (!err) printf("%s: Success, nsid:%d\n", cmd->name, cfg.namespace_id); @@ -2484,7 +2498,7 @@ static int create_ns(int argc, char **argv, struct command *cmd, struct plugin * err = -EINVAL; goto close_dev; } - err = nvme_identify_ns(dev->fd, NVME_NSID_ALL, &ns); + err = nvme_identify_ns(dev_fd(dev), NVME_NSID_ALL, &ns); if (err) { if (err < 0) fprintf(stderr, "identify-namespace: %s", @@ -2525,7 +2539,8 @@ static int create_ns(int argc, char **argv, struct command *cmd, struct plugin * .lbstm = cpu_to_le64(cfg.lbstm), }; - err = nvme_ns_mgmt_create(dev->fd, &ns2, &nsid, cfg.timeout, cfg.csi); + err = nvme_ns_mgmt_create(dev_fd(dev), &ns2, &nsid, cfg.timeout, + cfg.csi); if (!err) printf("%s: Success, created nsid:%d\n", cmd->name, nsid); else if (err > 0) @@ -2768,7 +2783,7 @@ int __id_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin, if (cfg.human_readable) flags |= VERBOSE; - err = nvme_identify_ctrl(dev->fd, &ctrl); + err = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (!err) nvme_show_id_ctrl(&ctrl, flags, vs); else if (err > 0) @@ -2818,7 +2833,7 @@ static int nvm_id_ctrl(int argc, char **argv, struct command *cmd, if (flags < 0) goto close_dev; - err = nvme_nvm_identify_ctrl(dev->fd, &ctrl_nvm); + err = nvme_nvm_identify_ctrl(dev_fd(dev), &ctrl_nvm); if (!err) nvme_show_id_ctrl_nvm(&ctrl_nvm, flags); else if (err > 0) @@ -2880,20 +2895,21 @@ static int nvm_id_ns(int argc, char **argv, struct command *cmd, flags |= VERBOSE; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { perror("get-namespace-id"); goto close_dev; } } - err = nvme_identify_ns(dev->fd, cfg.namespace_id, &ns); + err = nvme_identify_ns(dev_fd(dev), cfg.namespace_id, &ns); if (err) { nvme_show_status(err); goto close_dev; } - err = nvme_identify_ns_csi(dev->fd, cfg.namespace_id, cfg.uuid_index, + err = nvme_identify_ns_csi(dev_fd(dev), cfg.namespace_id, + cfg.uuid_index, NVME_CSI_NVM, &id_ns); if (!err) nvme_show_nvm_id_ns(&id_ns, cfg.namespace_id, &ns, 0, false, flags); @@ -2956,12 +2972,13 @@ static int nvm_id_ns_lba_format(int argc, char **argv, struct command *cmd, stru if (cfg.verbose) flags |= VERBOSE; - err = nvme_identify_ns(dev->fd, NVME_NSID_ALL, &ns); + err = nvme_identify_ns(dev_fd(dev), NVME_NSID_ALL, &ns); if (err) { ns.nlbaf = NVME_FEAT_LBA_RANGE_MAX - 1; ns.nulbaf = 0; } - err = nvme_identify_iocs_ns_csi_user_data_format(dev->fd, cfg.lba_format_index, + err = nvme_identify_iocs_ns_csi_user_data_format(dev_fd(dev), + cfg.lba_format_index, cfg.uuid_index, NVME_CSI_NVM, &nvm_ns); if (!err) nvme_show_nvm_id_ns(&nvm_ns, 0, &ns, cfg.lba_format_index, true, @@ -3018,7 +3035,7 @@ static int ns_descs(int argc, char **argv, struct command *cmd, struct plugin *p flags = BINARY; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); goto close_dev; @@ -3030,7 +3047,7 @@ static int ns_descs(int argc, char **argv, struct command *cmd, struct plugin *p goto close_dev; } - err = nvme_identify_ns_descs(dev->fd, cfg.namespace_id, nsdescs); + err = nvme_identify_ns_descs(dev_fd(dev), cfg.namespace_id, nsdescs); if (!err) nvme_show_id_ns_descs(nsdescs, cfg.namespace_id, flags); else if (err > 0) @@ -3104,7 +3121,7 @@ static int id_ns(int argc, char **argv, struct command *cmd, struct plugin *plug flags |= VERBOSE; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); goto close_dev; @@ -3112,9 +3129,10 @@ static int id_ns(int argc, char **argv, struct command *cmd, struct plugin *plug } if (cfg.force) - err = nvme_identify_allocated_ns(dev->fd, cfg.namespace_id, &ns); + err = nvme_identify_allocated_ns(dev_fd(dev), + cfg.namespace_id, &ns); else - err = nvme_identify_ns(dev->fd, cfg.namespace_id, &ns); + err = nvme_identify_ns(dev_fd(dev), cfg.namespace_id, &ns); if (!err) nvme_show_id_ns(&ns, cfg.namespace_id, 0, false, flags); @@ -3178,14 +3196,16 @@ static int cmd_set_independent_id_ns(int argc, char **argv, flags |= VERBOSE; if (!cfg.namespace_id) { - err = cfg.namespace_id = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = cfg.namespace_id = nvme_get_nsid(dev_fd(dev), + &cfg.namespace_id); if (err < 0) { perror("get-namespace-id"); goto close_dev; } } - err = nvme_identify_independent_identify_ns(dev->fd, cfg.namespace_id, &ns); + err = nvme_identify_independent_identify_ns(dev_fd(dev), + cfg.namespace_id, &ns); if (!err) nvme_show_cmd_set_independent_id_ns(&ns, cfg.namespace_id, flags); else if (err > 0) @@ -3236,7 +3256,7 @@ static int id_ns_granularity(int argc, char **argv, struct command *cmd, struct goto close_dev; } - err = nvme_identify_ns_granularity(dev->fd, granularity_list); + err = nvme_identify_ns_granularity(dev_fd(dev), granularity_list); if (!err) nvme_show_id_ns_granularity_list(granularity_list, flags); else if (err > 0) @@ -3287,7 +3307,7 @@ static int id_nvmset(int argc, char **argv, struct command *cmd, struct plugin * if (flags < 0) goto close_dev; - err = nvme_identify_nvmset_list(dev->fd, cfg.nvmset_id, &nvmset); + err = nvme_identify_nvmset_list(dev_fd(dev), cfg.nvmset_id, &nvmset); if (!err) nvme_show_id_nvmset(&nvmset, cfg.nvmset_id, flags); else if (err > 0) @@ -3345,7 +3365,7 @@ static int id_uuid(int argc, char **argv, struct command *cmd, struct plugin *pl if (cfg.human_readable) flags |= VERBOSE; - err = nvme_identify_uuid(dev->fd, &uuid_list); + err = nvme_identify_uuid(dev_fd(dev), &uuid_list); if (!err) nvme_show_id_uuid_list(&uuid_list, flags); else if (err > 0) @@ -3385,7 +3405,7 @@ static int id_iocs(int argc, char **argv, struct command *cmd, struct plugin *pl if (err < 0) goto ret; - err = nvme_identify_iocs(dev->fd, cfg.cntid, &iocs); + err = nvme_identify_iocs(dev_fd(dev), cfg.cntid, &iocs); if (!err) { printf("NVMe Identify I/O Command Set:\n"); nvme_show_id_iocs(&iocs); @@ -3433,7 +3453,7 @@ static int id_domain(int argc, char **argv, struct command *cmd, struct plugin * if (flags < 0) goto close_dev; - err = nvme_identify_domain_list(dev->fd, cfg.dom_id, &id_domain); + err = nvme_identify_domain_list(dev_fd(dev), cfg.dom_id, &id_domain); if (!err) { printf("NVMe Identify command for Domain List is successful:\n"); printf("NVMe Identify Domain List:\n"); @@ -3464,7 +3484,7 @@ static int get_ns_id(int argc, char **argv, struct command *cmd, struct plugin * if (err < 0) goto ret; - err = nvme_get_nsid(dev->fd, &nsid); + err = nvme_get_nsid(dev_fd(dev), &nsid); if (err < 0) { fprintf(stderr, "get namespace ID: %s\n", nvme_strerror(errno)); err = errno; @@ -3528,7 +3548,7 @@ static int virtual_mgmt(int argc, char **argv, struct command *cmd, struct plugi struct nvme_virtual_mgmt_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .act = cfg.act, .rt = cfg.rt, .cntlid = cfg.cntlid, @@ -3591,7 +3611,7 @@ static int primary_ctrl_caps(int argc, char **argv, struct command *cmd, struct if (cfg.human_readable) flags |= VERBOSE; - err = nvme_identify_primary_ctrl(dev->fd, cfg.cntlid, &caps); + err = nvme_identify_primary_ctrl(dev_fd(dev), cfg.cntlid, &caps); if (!err) nvme_show_primary_ctrl_cap(&caps, flags); else if (err > 0) @@ -3659,7 +3679,7 @@ static int list_secondary_ctrl(int argc, char **argv, struct command *cmd, struc goto close_err; } - err = nvme_identify_secondary_ctrl_list(dev->fd, cfg.namespace_id, + err = nvme_identify_secondary_ctrl_list(dev_fd(dev), cfg.namespace_id, cfg.cntid, sc_list); if (!err) nvme_show_list_secondary_ctrl(sc_list, cfg.num_entries, flags); @@ -3712,7 +3732,7 @@ static int device_self_test(int argc, char **argv, struct command *cmd, struct p struct nvme_dev_self_test_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .stc = cfg.stc, .timeout = NVME_DEFAULT_IOCTL_TIMEOUT, @@ -3779,7 +3799,7 @@ static int self_test_log(int argc, char **argv, struct command *cmd, struct plug if (cfg.verbose) flags |= VERBOSE; - err = nvme_get_log_device_self_test(dev->fd, &log); + err = nvme_get_log_device_self_test(dev_fd(dev), &log); if (!err) nvme_show_self_test_log(&log, cfg.dst_entries, 0, dev->name, flags); @@ -3968,7 +3988,7 @@ static int get_feature(int argc, char **argv, struct command *cmd, goto ret; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { if (errno != ENOTTY) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); @@ -3990,7 +4010,7 @@ static int get_feature(int argc, char **argv, struct command *cmd, goto close_dev; } - err = get_feature_ids(dev->fd, cfg); + err = get_feature_ids(dev_fd(dev), cfg); close_dev: dev_close(dev); @@ -4089,7 +4109,7 @@ static int fw_download(int argc, char **argv, struct command *cmd, struct plugin struct nvme_fw_download_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .offset = cfg.offset, .data_len = cfg.xfer, .data = fw_buf, @@ -4186,7 +4206,7 @@ static int fw_commit(int argc, char **argv, struct command *cmd, struct plugin * struct nvme_fw_commit_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .slot = cfg.slot, .action = cfg.action, .bpid = cfg.bpid, @@ -4249,7 +4269,7 @@ static int subsystem_reset(int argc, char **argv, struct command *cmd, struct pl if (err < 0) goto ret; - err = nvme_subsystem_reset(dev->fd); + err = nvme_subsystem_reset(dev_fd(dev)); if (err < 0) { if (errno == ENOTTY) fprintf(stderr, @@ -4277,7 +4297,7 @@ static int reset(int argc, char **argv, struct command *cmd, struct plugin *plug if (err < 0) goto ret; - err = nvme_ctrl_reset(dev->fd); + err = nvme_ctrl_reset(dev_fd(dev)); if (err < 0) fprintf(stderr, "Reset: %s\n", nvme_strerror(errno)); @@ -4300,7 +4320,7 @@ static int ns_rescan(int argc, char **argv, struct command *cmd, struct plugin * if (err < 0) goto ret; - err = nvme_ns_rescan(dev->fd); + err = nvme_ns_rescan(dev_fd(dev)); if (err < 0) fprintf(stderr, "Namespace Rescan"); @@ -4389,7 +4409,7 @@ static int sanitize(int argc, char **argv, struct command *cmd, struct plugin *p struct nvme_sanitize_nvm_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .sanact = cfg.sanact, .ause = cfg.ause, .owpass = cfg.owpass, @@ -4535,7 +4555,7 @@ static int show_registers(int argc, char **argv, struct command *cmd, struct plu if (cfg.human_readable) flags |= VERBOSE; - err = nvme_get_properties(dev->fd, &bar); + err = nvme_get_properties(dev_fd(dev), &bar); if (err) { bar = mmap_registers(r, dev); fabrics = false; @@ -4597,7 +4617,7 @@ static int get_property(int argc, char **argv, struct command *cmd, struct plugi struct nvme_get_property_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .offset = cfg.offset, .value = &value, .timeout = NVME_DEFAULT_IOCTL_TIMEOUT, @@ -4659,7 +4679,7 @@ static int set_property(int argc, char **argv, struct command *cmd, struct plugi struct nvme_set_property_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .offset = cfg.offset, .value = cfg.value, .timeout = NVME_DEFAULT_IOCTL_TIMEOUT, @@ -4780,7 +4800,7 @@ static int format(int argc, char **argv, struct command *cmd, struct plugin *plu } } - err = nvme_identify_ctrl(dev->fd, &ctrl); + err = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (err) { fprintf(stderr, "identify-ctrl: %s\n", nvme_strerror(errno)); goto close_dev; @@ -4794,7 +4814,7 @@ static int format(int argc, char **argv, struct command *cmd, struct plugin *plu */ cfg.namespace_id = NVME_NSID_ALL; } else if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); goto close_dev; @@ -4811,7 +4831,7 @@ static int format(int argc, char **argv, struct command *cmd, struct plugin *plu } if (cfg.namespace_id != NVME_NSID_ALL) { - err = nvme_identify_ns(dev->fd, cfg.namespace_id, &ns); + err = nvme_identify_ns(dev_fd(dev), cfg.namespace_id, &ns); if (err) { if (err < 0) fprintf(stderr, "identify-namespace: %s\n", nvme_strerror(errno)); @@ -4887,7 +4907,7 @@ static int format(int argc, char **argv, struct command *cmd, struct plugin *plu struct nvme_format_nvm_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .lbafu = (cfg.lbaf & NVME_NS_FLBAS_HIGHER_MASK) >> 4, .lbaf = cfg.lbaf & NVME_NS_FLBAS_LOWER_MASK, @@ -4907,7 +4927,7 @@ static int format(int argc, char **argv, struct command *cmd, struct plugin *plu printf("Success formatting namespace:%x\n", cfg.namespace_id); if (cfg.lbaf != prev_lbaf){ if (is_chardev(dev)) { - if (ioctl(dev->fd, NVME_IOCTL_RESCAN) < 0) { + if (ioctl(dev_fd(dev), NVME_IOCTL_RESCAN) < 0) { fprintf(stderr, "failed to rescan namespaces\n"); err = -errno; goto close_dev; @@ -4922,14 +4942,14 @@ static int format(int argc, char **argv, struct command *cmd, struct plugin *plu * to the given one because blkdev will not * update by itself without re-opening fd. */ - if (ioctl(dev->fd, BLKBSZSET, &block_size) < 0) { + if (ioctl(dev_fd(dev), BLKBSZSET, &block_size) < 0) { fprintf(stderr, "failed to set block size to %d\n", block_size); err = -errno; goto close_dev; } - if (ioctl(dev->fd, BLKRRPART) < 0) { + if (ioctl(dev_fd(dev), BLKRRPART) < 0) { fprintf(stderr, "failed to re-read partition table\n"); err = -errno; goto close_dev; @@ -4937,7 +4957,7 @@ static int format(int argc, char **argv, struct command *cmd, struct plugin *plu } } if (cfg.reset && is_chardev(dev)) - nvme_ctrl_reset(dev->fd); + nvme_ctrl_reset(dev_fd(dev)); } close_dev: @@ -5012,7 +5032,7 @@ static int set_feature(int argc, char **argv, struct command *cmd, struct plugin goto ret; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { if (errno != ENOTTY) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); @@ -5080,7 +5100,7 @@ static int set_feature(int argc, char **argv, struct command *cmd, struct plugin struct nvme_set_features_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = cfg.feature_id, .nsid = cfg.namespace_id, .cdw11 = cfg.value, @@ -5224,7 +5244,7 @@ static int sec_send(int argc, char **argv, struct command *cmd, struct plugin *p struct nvme_security_send_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .nssf = cfg.nssf, .spsp0 = cfg.spsp & 0xff, @@ -5383,7 +5403,7 @@ static int dir_send(int argc, char **argv, struct command *cmd, struct plugin *p struct nvme_directive_send_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .dspec = cfg.dspec, .doper = cfg.doper, @@ -5455,7 +5475,7 @@ static int write_uncor(int argc, char **argv, struct command *cmd, struct plugin goto ret; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); goto close_dev; @@ -5464,7 +5484,7 @@ static int write_uncor(int argc, char **argv, struct command *cmd, struct plugin struct nvme_io_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .slba = cfg.start_block, .nlb = cfg.block_count, @@ -5608,14 +5628,14 @@ static int write_zeroes(int argc, char **argv, struct command *cmd, struct plugi if (cfg.storage_tag_check) control |= NVME_IO_STC; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); goto close_dev; } } - err = nvme_identify_ns(dev->fd, cfg.namespace_id, &ns); + err = nvme_identify_ns(dev_fd(dev), cfg.namespace_id, &ns); if (err) { nvme_show_status(err); goto close_dev; @@ -5624,7 +5644,8 @@ static int write_zeroes(int argc, char **argv, struct command *cmd, struct plugi goto close_dev; } - err = nvme_identify_ns_csi(dev->fd, cfg.namespace_id, 0, NVME_CSI_NVM, &nvm_ns); + err = nvme_identify_ns_csi(dev_fd(dev), cfg.namespace_id, 0, + NVME_CSI_NVM, &nvm_ns); if (!err) { nvme_id_ns_flbas_to_lbaf_inuse(ns.flbas, &lba_index); sts = nvm_ns.elbaf[lba_index] & NVME_NVM_ELBAF_STS_MASK; @@ -5638,7 +5659,7 @@ static int write_zeroes(int argc, char **argv, struct command *cmd, struct plugi struct nvme_io_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .slba = cfg.start_block, .nlb = cfg.block_count, @@ -5738,7 +5759,7 @@ static int dsm(int argc, char **argv, struct command *cmd, struct plugin *plugin } if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); goto close_dev; @@ -5750,7 +5771,7 @@ static int dsm(int argc, char **argv, struct command *cmd, struct plugin *plugin nvme_init_dsm_range(dsm, ctx_attrs, nlbs, slbas, nr); struct nvme_dsm_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .attrs = cfg.cdw11, .nr_ranges = nr, @@ -5905,7 +5926,7 @@ static int copy(int argc, char **argv, struct command *cmd, struct plugin *plugi } if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); goto close_dev; @@ -5921,7 +5942,7 @@ static int copy(int argc, char **argv, struct command *cmd, struct plugin *plugi struct nvme_copy_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .copy = copy.f0, .sdlba = cfg.sdlba, @@ -5982,14 +6003,14 @@ static int flush(int argc, char **argv, struct command *cmd, struct plugin *plug goto ret; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); goto close_dev; } } - err = nvme_flush(dev->fd, cfg.namespace_id); + err = nvme_flush(dev_fd(dev), cfg.namespace_id); if (err < 0) fprintf(stderr, "flush: %s\n", nvme_strerror(errno)); else if (err != 0) @@ -6052,7 +6073,7 @@ static int resv_acquire(int argc, char **argv, struct command *cmd, struct plugi goto ret; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); goto close_dev; @@ -6066,7 +6087,7 @@ static int resv_acquire(int argc, char **argv, struct command *cmd, struct plugi struct nvme_resv_acquire_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .rtype = cfg.rtype, .racqa = cfg.racqa, @@ -6136,7 +6157,7 @@ static int resv_register(int argc, char **argv, struct command *cmd, struct plug goto ret; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); goto close_dev; @@ -6156,7 +6177,7 @@ static int resv_register(int argc, char **argv, struct command *cmd, struct plug struct nvme_resv_register_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .rrega = cfg.rrega, .cptpl = cfg.cptpl, @@ -6228,7 +6249,7 @@ static int resv_release(int argc, char **argv, struct command *cmd, struct plugi goto ret; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); goto close_dev; @@ -6242,7 +6263,7 @@ static int resv_release(int argc, char **argv, struct command *cmd, struct plugi struct nvme_resv_release_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .rtype = cfg.rtype, .rrela = cfg.rrela, @@ -6318,7 +6339,7 @@ static int resv_report(int argc, char **argv, struct command *cmd, struct plugin flags = BINARY; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); goto close_dev; @@ -6341,7 +6362,7 @@ static int resv_report(int argc, char **argv, struct command *cmd, struct plugin struct nvme_resv_report_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .eds = cfg.eds, .len = size, @@ -6516,7 +6537,7 @@ static int submit_io(int opcode, char *command, const char *desc, } if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); goto close_dev; @@ -6572,7 +6593,7 @@ static int submit_io(int opcode, char *command, const char *desc, goto close_mfd; } - if (nvme_get_logical_block_size(dev->fd, cfg.namespace_id, + if (nvme_get_logical_block_size(dev_fd(dev), cfg.namespace_id, &logical_block_size) < 0) goto close_mfd; @@ -6591,7 +6612,7 @@ static int submit_io(int opcode, char *command, const char *desc, } if (cfg.metadata_size) { - err = nvme_identify_ns(dev->fd, cfg.namespace_id, &ns); + err = nvme_identify_ns(dev_fd(dev), cfg.namespace_id, &ns); if (err > 0) { nvme_show_status(err); goto free_buffer; @@ -6603,7 +6624,8 @@ static int submit_io(int opcode, char *command, const char *desc, nvme_id_ns_flbas_to_lbaf_inuse(ns.flbas, &lba_index); ms = ns.lbaf[lba_index].ms; - err = nvme_identify_ns_csi(dev->fd, 1, 0, NVME_CSI_NVM, &nvm_ns); + err = nvme_identify_ns_csi(dev_fd(dev), 1, 0, NVME_CSI_NVM, + &nvm_ns); if (!err) { sts = nvm_ns.elbaf[lba_index] & NVME_NVM_ELBAF_STS_MASK; pif = (nvm_ns.elbaf[lba_index] & NVME_NVM_ELBAF_PIF_MASK) >> 7; @@ -6672,7 +6694,7 @@ static int submit_io(int opcode, char *command, const char *desc, struct nvme_io_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .slba = cfg.start_block, .nlb = cfg.block_count, @@ -6838,14 +6860,14 @@ static int verify_cmd(int argc, char **argv, struct command *cmd, struct plugin control |= NVME_IO_STC; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno)); goto close_dev; } } - err = nvme_identify_ns(dev->fd, cfg.namespace_id, &ns); + err = nvme_identify_ns(dev_fd(dev), cfg.namespace_id, &ns); if (err) { nvme_show_status(err); goto close_dev; @@ -6854,7 +6876,8 @@ static int verify_cmd(int argc, char **argv, struct command *cmd, struct plugin goto close_dev; } - err = nvme_identify_ns_csi(dev->fd, cfg.namespace_id, 0, NVME_CSI_NVM, &nvm_ns); + err = nvme_identify_ns_csi(dev_fd(dev), cfg.namespace_id, 0, + NVME_CSI_NVM, &nvm_ns); if (!err) { nvme_id_ns_flbas_to_lbaf_inuse(ns.flbas, &lba_index); sts = nvm_ns.elbaf[lba_index] & NVME_NVM_ELBAF_STS_MASK; @@ -6868,7 +6891,7 @@ static int verify_cmd(int argc, char **argv, struct command *cmd, struct plugin struct nvme_io_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .slba = cfg.start_block, .nlb = cfg.block_count, @@ -6961,7 +6984,7 @@ static int sec_recv(int argc, char **argv, struct command *cmd, struct plugin *p struct nvme_security_receive_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .nssf = cfg.nssf, .spsp0 = cfg.spsp & 0xff, @@ -7070,7 +7093,7 @@ static int get_lba_status(int argc, char **argv, struct command *cmd, struct nvme_get_lba_status_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .slba = cfg.slba, .mndw = cfg.mndw, @@ -7145,7 +7168,7 @@ static int capacity_mgmt(int argc, char **argv, struct command *cmd, struct plug struct nvme_capacity_mgmt_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .op = cfg.operation, .element_id = cfg.element_id, .cdw11 = cfg.dw11, @@ -7283,7 +7306,7 @@ static int dir_receive(int argc, char **argv, struct command *cmd, struct plugin struct nvme_directive_recv_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .dspec = cfg.dspec, .doper = cfg.doper, @@ -7395,7 +7418,7 @@ static int lockdown_cmd(int argc, char **argv, struct command *cmd, struct plugi struct nvme_lockdown_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .scp = cfg.scp, .prhbt = cfg.prhbt, .ifc = cfg.ifc, @@ -7640,17 +7663,25 @@ static int passthru(int argc, char **argv, bool admin, gettimeofday(&start_time, NULL); if (admin) - err = nvme_admin_passthru(dev->fd, cfg.opcode, cfg.flags, cfg.rsvd, - cfg.namespace_id, cfg.cdw2, cfg.cdw3, cfg.cdw10, - cfg.cdw11, cfg.cdw12, cfg.cdw13, cfg.cdw14, - cfg.cdw15, cfg.data_len, data, cfg.metadata_len, - mdata, cfg.timeout, &result); + err = nvme_admin_passthru(dev_fd(dev), cfg.opcode, cfg.flags, + cfg.rsvd, + cfg.namespace_id, cfg.cdw2, + cfg.cdw3, cfg.cdw10, + cfg.cdw11, cfg.cdw12, cfg.cdw13, + cfg.cdw14, + cfg.cdw15, cfg.data_len, data, + cfg.metadata_len, + mdata, cfg.timeout, &result); else - err = nvme_io_passthru(dev->fd, cfg.opcode, cfg.flags, cfg.rsvd, - cfg.namespace_id, cfg.cdw2, cfg.cdw3, cfg.cdw10, - cfg.cdw11, cfg.cdw12, cfg.cdw13, cfg.cdw14, - cfg.cdw15, cfg.data_len, data, cfg.metadata_len, - mdata, cfg.timeout, &result); + err = nvme_io_passthru(dev_fd(dev), cfg.opcode, cfg.flags, + cfg.rsvd, + cfg.namespace_id, cfg.cdw2, cfg.cdw3, + cfg.cdw10, + cfg.cdw11, cfg.cdw12, cfg.cdw13, + cfg.cdw14, + cfg.cdw15, cfg.data_len, data, + cfg.metadata_len, + mdata, cfg.timeout, &result); gettimeofday(&end_time, NULL); cmd_name = nvme_cmd_to_string(admin, cfg.opcode); diff --git a/nvme.h b/nvme.h index 25b9c2a7..549cd9cd 100644 --- a/nvme.h +++ b/nvme.h @@ -43,6 +43,11 @@ struct nvme_dev { const char *name; }; +static inline int dev_fd(struct nvme_dev *dev) +{ + return dev->fd; +} + void register_extension(struct plugin *plugin); /* diff --git a/plugins/dera/dera-nvme.c b/plugins/dera/dera-nvme.c index a4ec0a07..44fac158 100644 --- a/plugins/dera/dera-nvme.c +++ b/plugins/dera/dera-nvme.c @@ -131,7 +131,7 @@ static int get_status(int argc, char **argv, struct command *cmd, struct plugin if (err < 0) return err; - err = nvme_get_log_simple(dev->fd, 0xc0, sizeof(log), &log); + err = nvme_get_log_simple(dev_fd(dev), 0xc0, sizeof(log), &log); if (err) { goto exit; } @@ -154,7 +154,7 @@ static int get_status(int argc, char **argv, struct command *cmd, struct plugin "Runtime Low", }; - err = nvme_dera_get_device_status(dev->fd, &state); + err = nvme_dera_get_device_status(dev_fd(dev), &state); if (!err){ if (state > 0 && state < 4){ printf("device_status : %s %d%% completed\n", dev_status[state], log.rebuild_percent); diff --git a/plugins/innogrit/innogrit-nvme.c b/plugins/innogrit/innogrit-nvme.c index 3769a260..651ce910 100644 --- a/plugins/innogrit/innogrit-nvme.c +++ b/plugins/innogrit/innogrit-nvme.c @@ -43,7 +43,7 @@ static int innogrit_smart_log_additional(int argc, char **argv, if (err < 0) return err; - nvme_get_log_smart(dev->fd, cfg.namespace_id, false, &smart_log); + nvme_get_log_smart(dev_fd(dev), cfg.namespace_id, false, &smart_log); nvme_show_smart_log(&smart_log, cfg.namespace_id, dev->name, NORMAL); printf("DW0[0-1] Defect Cnt : %u\n", pvsc_smart->defect_cnt); @@ -213,7 +213,7 @@ static int innogrit_vsc_geteventlog(int argc, char **argv, icount++; memset(data, 0, 4096); - ret = nvme_vucmd(dev->fd, NVME_VSC_GET_EVENT_LOG, 0, 0, + ret = nvme_vucmd(dev_fd(dev), NVME_VSC_GET_EVENT_LOG, 0, 0, (SRB_SIGNATURE >> 32), (SRB_SIGNATURE & 0xFFFFFFFF), (char *)data, 4096); @@ -281,8 +281,9 @@ static int innogrit_vsc_geteventlog(int argc, char **argv, if (cfg.clean_flg == 1) { printf("Clean eventlog\n"); - nvme_vucmd(dev->fd, NVME_VSC_CLEAN_EVENT_LOG, 0, 0, (SRB_SIGNATURE >> 32), - (SRB_SIGNATURE & 0xFFFFFFFF), (char *)NULL, 0); + nvme_vucmd(dev_fd(dev), NVME_VSC_CLEAN_EVENT_LOG, 0, 0, + (SRB_SIGNATURE >> 32), + (SRB_SIGNATURE & 0xFFFFFFFF), (char *)NULL, 0); } dev_close(dev); @@ -322,7 +323,7 @@ static int innogrit_vsc_getcdump(int argc, char **argv, struct command *command, ipackindex = 0; memset(data, 0, 4096); - if (nvme_vucmd(dev->fd, NVME_VSC_GET, VSC_FN_GET_CDUMP, 0x00, + if (nvme_vucmd(dev_fd(dev), NVME_VSC_GET, VSC_FN_GET_CDUMP, 0x00, (SRB_SIGNATURE >> 32), (SRB_SIGNATURE & 0xFFFFFFFF), (char *)data, 4096) == 0) { memcpy(&cdumpinfo, &data[3072], sizeof(cdumpinfo)); @@ -345,7 +346,8 @@ static int innogrit_vsc_getcdump(int argc, char **argv, struct command *command, if (busevsc == false) { memset(data, 0, 4096); - ret = nvme_get_nsid_log(dev->fd, true, 0x07, NVME_NSID_ALL, + ret = nvme_get_nsid_log(dev_fd(dev), true, 0x07, + NVME_NSID_ALL, 4096, data); if (ret != 0) return ret; @@ -369,13 +371,14 @@ static int innogrit_vsc_getcdump(int argc, char **argv, struct command *command, for (icur = 0; icur < itotal; icur += 4096) { memset(data, 0, 4096); if (busevsc) - ret = nvme_vucmd(dev->fd, NVME_VSC_GET, + ret = nvme_vucmd(dev_fd(dev), NVME_VSC_GET, VSC_FN_GET_CDUMP, 0x00, (SRB_SIGNATURE >> 32), (SRB_SIGNATURE & 0xFFFFFFFF), (char *)data, 4096); else - ret = nvme_get_nsid_log(dev->fd, true, 0x07, + ret = nvme_get_nsid_log(dev_fd(dev), true, + 0x07, NVME_NSID_ALL, 4096, data); if (ret != 0) return ret; @@ -392,13 +395,14 @@ static int innogrit_vsc_getcdump(int argc, char **argv, struct command *command, if (ipackindex != ipackcount) { memset(data, 0, 4096); if (busevsc) - ret = nvme_vucmd(dev->fd, NVME_VSC_GET, + ret = nvme_vucmd(dev_fd(dev), NVME_VSC_GET, VSC_FN_GET_CDUMP, 0x00, (SRB_SIGNATURE >> 32), (SRB_SIGNATURE & 0xFFFFFFFF), (char *)data, 4096); else - ret = nvme_get_nsid_log(dev->fd, true, 0x07, + ret = nvme_get_nsid_log(dev_fd(dev), true, + 0x07, NVME_NSID_ALL, 4096, data); if (ret != 0) diff --git a/plugins/intel/intel-nvme.c b/plugins/intel/intel-nvme.c index 3425a22c..e0cf4abd 100644 --- a/plugins/intel/intel-nvme.c +++ b/plugins/intel/intel-nvme.c @@ -368,7 +368,8 @@ static int get_additional_smart_log(int argc, char **argv, struct command *cmd, if (err < 0) return err; - err = nvme_get_log_simple(dev->fd, 0xca, sizeof(smart_log), &smart_log); + err = nvme_get_log_simple(dev_fd(dev), 0xca, sizeof(smart_log), + &smart_log); if (!err) { if (cfg.json) show_intel_smart_log_jsn(&smart_log, cfg.namespace_id, @@ -409,7 +410,7 @@ static int get_market_log(int argc, char **argv, struct command *cmd, struct plu if (err < 0) return err; - err = nvme_get_log_simple(dev->fd, 0xdd, sizeof(log), log); + err = nvme_get_log_simple(dev_fd(dev), 0xdd, sizeof(log), log); if (!err) { if (!cfg.raw_binary) printf("Intel Marketing Name Log:\n%s\n", log); @@ -471,7 +472,7 @@ static int get_temp_stats_log(int argc, char **argv, struct command *cmd, struct if (err < 0) return err; - err = nvme_get_log_simple(dev->fd, 0xc5, sizeof(stats), &stats); + err = nvme_get_log_simple(dev_fd(dev), 0xc5, sizeof(stats), &stats); if (!err) { if (!cfg.raw_binary) show_temp_stats(&stats); @@ -1060,8 +1061,8 @@ static int get_lat_stats_log(int argc, char **argv, struct command *cmd, struct /* For optate, latency stats are deleted every time their LID is pulled. * Therefore, we query the longest lat_stats log page first. */ - err = nvme_get_log_simple(dev->fd, cfg.write ? 0xc2 : 0xc1, - sizeof(data), &data); + err = nvme_get_log_simple(dev_fd(dev), cfg.write ? 0xc2 : 0xc1, + sizeof(data), &data); media_version[0] = (data[1] << 8) | data[0]; media_version[1] = (data[3] << 8) | data[2]; @@ -1075,7 +1076,7 @@ static int get_lat_stats_log(int argc, char **argv, struct command *cmd, struct struct nvme_get_features_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = 0xf7, .nsid = 0, .sel = 0, @@ -1397,7 +1398,7 @@ static int get_internal_log(int argc, char **argv, struct command *command, } if (!cfg.file) { - err = setup_file(f, cfg.file, dev->fd, cfg.log); + err = setup_file(f, cfg.file, dev_fd(dev), cfg.log); if (err) goto out_free; cfg.file = f; @@ -1415,7 +1416,8 @@ static int get_internal_log(int argc, char **argv, struct command *command, goto out_free; } - err = read_header(&cmd, buf, dev->fd, cdlog.u.entireDword, cfg.namespace_id); + err = read_header(&cmd, buf, dev_fd(dev), cdlog.u.entireDword, + cfg.namespace_id); if (err) goto out; memcpy(intel, buf, sizeof(*intel)); @@ -1424,7 +1426,7 @@ static int get_internal_log(int argc, char **argv, struct command *command, if ((intel->ver.major < 1 && intel->ver.minor < 1) || (intel->ver.major <= 1 && intel->ver.minor <= 1 && cfg.log == 0)) { cmd.addr = (unsigned long)(void *)buf; - err = get_internal_log_old(buf, output, dev->fd, &cmd); + err = get_internal_log_old(buf, output, dev_fd(dev), &cmd); goto out; } @@ -1468,7 +1470,8 @@ static int get_internal_log(int argc, char **argv, struct command *command, cmd.cdw10 = 0x400; cmd.data_len = min(0x400, ad[i].assertsize) * 4; err = read_entire_cmd(&cmd, ad[i].assertsize, - 0x400, output, dev->fd, + 0x400, output, + dev_fd(dev), buf); if (err) goto out; @@ -1478,7 +1481,7 @@ static int get_internal_log(int argc, char **argv, struct command *command, if (count > 1) cdlog.u.fields.selectNlog = i; - err = read_header(&cmd, buf, dev->fd, + err = read_header(&cmd, buf, dev_fd(dev), cdlog.u.entireDword, cfg.namespace_id); if (err) @@ -1492,7 +1495,8 @@ static int get_internal_log(int argc, char **argv, struct command *command, cmd.cdw10 = 0x400; cmd.data_len = min(0x1000, intel_nlog->nlogbytesize); err = read_entire_cmd(&cmd, intel_nlog->nlogbytesize / 4, - 0x400, output, dev->fd, + 0x400, output, + dev_fd(dev), buf); if (err) goto out; @@ -1501,7 +1505,8 @@ static int get_internal_log(int argc, char **argv, struct command *command, cmd.cdw10 = 0x400; cmd.data_len = 0x400; err = read_entire_cmd(&cmd, ehdr->edumps[j].coresize, - 0x400, output, dev->fd, + 0x400, output, + dev_fd(dev), buf); if (err) goto out; @@ -1579,7 +1584,7 @@ static int enable_lat_stats_tracking(int argc, char **argv, struct nvme_get_features_args args_get = { .args_size = sizeof(args_get), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = fid, .nsid = nsid, .sel = sel, @@ -1593,7 +1598,7 @@ static int enable_lat_stats_tracking(int argc, char **argv, struct nvme_set_features_args args_set = { .args_size = sizeof(args_set), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = fid, .nsid = nsid, .cdw11 = option, @@ -1682,8 +1687,8 @@ static int set_lat_stats_thresholds(int argc, char **argv, * valid buckets a user is allowed to modify. Read or write doesn't * matter */ - err = nvme_get_log_simple(dev->fd, 0xc2, - sizeof(media_version), media_version); + err = nvme_get_log_simple(dev_fd(dev), 0xc2, + sizeof(media_version), media_version); if (err) { fprintf(stderr, "Querying media version failed. "); nvme_show_status(err); @@ -1703,7 +1708,7 @@ static int set_lat_stats_thresholds(int argc, char **argv, struct nvme_set_features_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = fid, .nsid = nsid, .cdw11 = cfg.write ? 0x1 : 0x0, diff --git a/plugins/memblaze/memblaze-nvme.c b/plugins/memblaze/memblaze-nvme.c index 921ecb9b..f97d0a9b 100644 --- a/plugins/memblaze/memblaze-nvme.c +++ b/plugins/memblaze/memblaze-nvme.c @@ -478,11 +478,12 @@ static int mb_get_additional_smart_log(int argc, char **argv, struct command *cm if (err < 0) return err; - err = nvme_get_nsid_log(dev->fd, false, 0xca, cfg.namespace_id, - sizeof(smart_log), &smart_log); + err = nvme_get_nsid_log(dev_fd(dev), false, 0xca, cfg.namespace_id, + sizeof(smart_log), &smart_log); if (!err) { if (!cfg.raw_binary) - err = show_memblaze_smart_log(dev->fd, cfg.namespace_id, + err = show_memblaze_smart_log(dev_fd(dev), + cfg.namespace_id, dev->name, &smart_log); else d_raw((unsigned char *)&smart_log, sizeof(smart_log)); @@ -522,7 +523,7 @@ static int mb_get_powermanager_status(int argc, char **argv, struct command *cmd struct nvme_get_features_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = feature_id, .nsid = 0, .sel = 0, @@ -580,7 +581,7 @@ static int mb_set_powermanager_status(int argc, char **argv, struct command *cmd struct nvme_set_features_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = cfg.feature_id, .nsid = 0, .cdw11 = cfg.value, @@ -657,7 +658,7 @@ static int mb_set_high_latency_log(int argc, char **argv, struct command *cmd, s struct nvme_set_features_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = cfg.feature_id, .nsid = 0, .cdw11 = cfg.value, @@ -798,12 +799,12 @@ static int mb_high_latency_log_print(int argc, char **argv, struct command *cmd, fdi = fopen(FID_C3_LOG_FILENAME, "w+"); glp_high_latency_show_bar(fdi, DO_PRINT_FLAG); - err = nvme_get_log_simple(dev->fd, GLP_ID_VU_GET_HIGH_LATENCY_LOG, + err = nvme_get_log_simple(dev_fd(dev), GLP_ID_VU_GET_HIGH_LATENCY_LOG, sizeof(buf), &buf); while (1) { if (!glp_high_latency(fdi, buf, LOG_PAGE_SIZE, DO_PRINT_FLAG)) break; - err = nvme_get_log_simple(dev->fd, GLP_ID_VU_GET_HIGH_LATENCY_LOG, + err = nvme_get_log_simple(dev_fd(dev), GLP_ID_VU_GET_HIGH_LATENCY_LOG, sizeof(buf), &buf); if ( err) { nvme_show_status(err); @@ -925,7 +926,7 @@ static int mb_selective_download(int argc, char **argv, struct command *cmd, str struct nvme_fw_download_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .offset = offset, .data_len = xfer, .data = fw_buf, @@ -945,7 +946,7 @@ static int mb_selective_download(int argc, char **argv, struct command *cmd, str offset += xfer; } - err = memblaze_fw_commit(dev->fd, selectNo); + err = memblaze_fw_commit(dev_fd(dev), selectNo); if(err == 0x10B || err == 0x20B) { err = 0; @@ -1088,7 +1089,7 @@ static int mb_lat_stats_log_print(int argc, char **argv, struct command *cmd, st if (err < 0) return err; - err = nvme_get_log_simple(dev->fd, cfg.write ? 0xc2 : 0xc1, + err = nvme_get_log_simple(dev_fd(dev), cfg.write ? 0xc2 : 0xc1, sizeof(stats), &stats); if (!err) io_latency_histogram(cfg.write ? f2 : f1, stats, DO_PRINT_FLAG, @@ -1134,7 +1135,7 @@ static int memblaze_clear_error_log(int argc, char **argv, struct command *cmd, struct nvme_set_features_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = cfg.feature_id, .nsid = 0, .cdw11 = cfg.value, @@ -1225,7 +1226,7 @@ static int mb_set_lat_stats(int argc, char **argv, struct nvme_get_features_args args_get = { .args_size = sizeof(args_get), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = fid, .nsid = nsid, .sel = sel, @@ -1239,7 +1240,7 @@ static int mb_set_lat_stats(int argc, char **argv, struct nvme_set_features_args args_set = { .args_size = sizeof(args_set), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = fid, .nsid = nsid, .cdw11 = option, diff --git a/plugins/micron/micron-nvme.c b/plugins/micron/micron-nvme.c index db76ef7b..df53044f 100644 --- a/plugins/micron/micron-nvme.c +++ b/plugins/micron/micron-nvme.c @@ -581,7 +581,7 @@ static int micron_selective_download(int argc, char **argv, struct nvme_fw_download_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .offset = offset, .data_len = xfer, .data = fw_buf, @@ -601,7 +601,7 @@ static int micron_selective_download(int argc, char **argv, offset += xfer; } - err = micron_fw_commit(dev->fd, selectNo); + err = micron_fw_commit(dev_fd(dev), selectNo); if (err == 0x10B || err == 0x20B) { err = 0; @@ -664,7 +664,7 @@ static int micron_smbus_option(int argc, char **argv, if (!strcmp(opt.option, "enable")) { cdw11 = opt.value << 1 | 1; - err = nvme_set_features_simple(dev->fd, fid, 1, cdw11, opt.save, + err = nvme_set_features_simple(dev_fd(dev), fid, 1, cdw11, opt.save, &result); if (err == 0) { printf("successfully enabled SMBus on drive\n"); @@ -675,7 +675,7 @@ static int micron_smbus_option(int argc, char **argv, else if (!strcmp(opt.option, "status")) { struct nvme_get_features_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = fid, .nsid = 1, .sel = opt.value, @@ -697,7 +697,7 @@ static int micron_smbus_option(int argc, char **argv, } else if (!strcmp(opt.option, "disable")) { cdw11 = opt.value << 1 | 0; - err = nvme_set_features_simple(dev->fd, fid, 1, cdw11, opt.save, + err = nvme_set_features_simple(dev_fd(dev), fid, 1, cdw11, opt.save, &result); if (err == 0) { printf("Successfully disabled SMBus on drive\n"); @@ -711,7 +711,7 @@ static int micron_smbus_option(int argc, char **argv, return -1; } - close(dev->fd); + close(dev_fd(dev)); return err; } @@ -749,7 +749,7 @@ static int micron_temp_stats(int argc, char **argv, struct command *cmd, if (strcmp(cfg.fmt, "json") == 0) is_json = true; - err = nvme_get_log_smart(dev->fd, 0xffffffff, false, &smart_log); + err = nvme_get_log_smart(dev_fd(dev), 0xffffffff, false, &smart_log); if (!err) { temperature = ((smart_log.temperature[1] << 8) | smart_log.temperature[0]); temperature = temperature ? temperature - 273 : 0; @@ -903,7 +903,7 @@ static int micron_pcie_stats(int argc, char **argv, admin_cmd.addr = (__u64)(uintptr_t)&pcie_error_counters; admin_cmd.data_len = sizeof(pcie_error_counters); admin_cmd.cdw10 = 1; - err = nvme_submit_admin_passthru(dev->fd, &admin_cmd, NULL); + err = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL); if (!err) { counters = true; correctable_errors = 10; @@ -1057,7 +1057,7 @@ static int micron_clear_pcie_correctable_errors(int argc, char **argv, /* For M51CX models, PCIe errors are cleared using 0xC3 feature */ if (model == M51CX) { - err = nvme_set_features_simple(dev->fd, fid, 0, (1 << 31), false, + err = nvme_set_features_simple(dev_fd(dev), fid, 0, (1 << 31), false, &result); if (err == 0 && (err = (int)result) == 0) { printf("Device correctable errors are cleared!\n"); @@ -1067,7 +1067,7 @@ static int micron_clear_pcie_correctable_errors(int argc, char **argv, admin_cmd.opcode = 0xD6; admin_cmd.addr = 0; admin_cmd.cdw10 = 0; - err = nvme_submit_admin_passthru(dev->fd, &admin_cmd, NULL); + err = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL); if (err == 0) { printf("Device correctable error counters are cleared!\n"); goto out; @@ -1526,7 +1526,7 @@ static int micron_nand_stats(int argc, char **argv, if (strcmp(cfg.fmt, "normal") == 0) is_json = false; - err = nvme_identify_ctrl(dev->fd, &ctrl); + err = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (err) { printf("Error %d retrieving controller identification data\n", err); goto out; @@ -1541,12 +1541,12 @@ static int micron_nand_stats(int argc, char **argv, goto out; } - err = nvme_get_log_simple(dev->fd, 0xD0, D0_log_size, extSmartLog); + err = nvme_get_log_simple(dev_fd(dev), 0xD0, D0_log_size, extSmartLog); has_d0_log = (0 == err); /* should check for firmware version if this log is supported or not */ if (eModel == M5407 || eModel == M5410) { - err = nvme_get_log_simple(dev->fd, 0xFB, FB_log_size, logFB); + err = nvme_get_log_simple(dev_fd(dev), 0xFB, FB_log_size, logFB); has_fb_log = (0 == err); } @@ -1633,7 +1633,7 @@ static int micron_smart_ext_log(int argc, char **argv, err = -1; goto out; } - err = nvme_get_log_simple(dev->fd, 0xE1, E1_log_size, extSmartLog); + err = nvme_get_log_simple(dev_fd(dev), 0xE1, E1_log_size, extSmartLog); if (!err) { print_ext_smart_logs_e1((__u8 *)extSmartLog, is_json); } @@ -2061,14 +2061,14 @@ static int micron_drive_info(int argc, char **argv, struct command *cmd, admin_cmd.addr = (__u64) (uintptr_t) &dinfo; admin_cmd.data_len = (__u32)sizeof(dinfo); admin_cmd.cdw12 = 3; - err = nvme_submit_admin_passthru(dev->fd, &admin_cmd, NULL); + err = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL); if (err) { fprintf(stderr, "ERROR : drive-info opcode failed with 0x%x\n", err); dev_close(dev); return -1; } } else { - err = nvme_identify_ctrl(dev->fd, &ctrl); + err = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (err) { fprintf(stderr, "ERROR : identify_ctrl() failed with 0x%x\n", err); dev_close(dev); @@ -2287,7 +2287,7 @@ static int micron_fw_activation_history(int argc, char **argv, struct command *c goto out; } - err = nvme_get_log_simple(dev->fd, 0xC2, C2_log_size, logC2); + err = nvme_get_log_simple(dev_fd(dev), 0xC2, C2_log_size, logC2); if (err) { fprintf(stderr, "Failed to retrieve fw activation history log, error: %x\n", err); goto out; @@ -2380,7 +2380,7 @@ static int micron_latency_stats_track(int argc, char **argv, struct command *cmd struct nvme_get_features_args g_args = { .args_size = sizeof(g_args), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = fid, .nsid = 0, .sel = 0, @@ -2459,7 +2459,7 @@ static int micron_latency_stats_track(int argc, char **argv, struct command *cmd struct nvme_set_features_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = MICRON_FID_LATENCY_MONITOR, .nsid = 0, .cdw11 = enable, @@ -2534,7 +2534,7 @@ static int micron_latency_stats_logs(int argc, char **argv, struct command *cmd, if (err) return err; memset(&log, 0, sizeof(log)); - err = nvme_get_log_simple(dev->fd, 0xD1, sizeof(log), &log); + err = nvme_get_log_simple(dev_fd(dev), 0xD1, sizeof(log), &log); if (err) { if (err < 0) printf("Unable to retrieve latency stats log the drive\n"); @@ -2625,7 +2625,7 @@ static int micron_latency_stats_info(int argc, char **argv, struct command *cmd, } memset(&log, 0, sizeof(log)); - err = nvme_get_log_simple(dev->fd, 0xD0, sizeof(log), &log); + err = nvme_get_log_simple(dev_fd(dev), 0xD0, sizeof(log), &log); if (err) { if (err < 0) printf("Unable to retrieve latency stats log the drive\n"); @@ -2691,9 +2691,9 @@ static int micron_ocp_smart_health_logs(int argc, char **argv, struct command *c __u8 spec = (eModel == M5410) ? 0 : 1; __u8 nsze; - if ((err = nvme_identify_ctrl(dev->fd, &ctrl)) == 0) - err = nvme_get_log_simple(dev->fd, 0xFB, - FB_log_size, logFB); + if ((err = nvme_identify_ctrl(dev_fd(dev), &ctrl)) == 0) + err = nvme_get_log_simple(dev_fd(dev), 0xFB, + FB_log_size, logFB); if (err) { if (err < 0) printf("Unable to retrieve smart log 0xFB for the drive\n"); @@ -2714,7 +2714,7 @@ static int micron_ocp_smart_health_logs(int argc, char **argv, struct command *c goto out; } - err = nvme_get_log_simple(dev->fd, 0xC0, C0_log_size, logC0); + err = nvme_get_log_simple(dev_fd(dev), 0xC0, C0_log_size, logC0); if (err == 0) { print_smart_cloud_health_log((__u8 *)logC0, is_json); } else if (err < 0) { @@ -2750,7 +2750,7 @@ static int micron_clr_fw_activation_history(int argc, char **argv, return err; } - err = nvme_set_features_simple(dev->fd, fid, 1 << 31, 0, 0, &result); + err = nvme_set_features_simple(dev_fd(dev), fid, 1 << 31, 0, 0, &result); if (err == 0) err = (int)result; else printf ("Failed to clear fw activation history, error = 0x%x\n", err); @@ -2791,7 +2791,7 @@ static int micron_telemetry_cntrl_option(int argc, char **argv, if (err < 0) return -1; - err = nvme_identify_ctrl(dev->fd, &ctrl); + err = nvme_identify_ctrl(dev_fd(dev), &ctrl); if ((ctrl.lpa & 0x8) != 0x8) { printf("drive doesn't support host/controller generated telemetry logs\n"); dev_close(dev); @@ -2801,7 +2801,7 @@ static int micron_telemetry_cntrl_option(int argc, char **argv, if (!strcmp(opt.option, "enable")) { struct nvme_set_features_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = fid, .nsid = 1, .cdw11 = 1, @@ -2823,7 +2823,7 @@ static int micron_telemetry_cntrl_option(int argc, char **argv, } else if (!strcmp(opt.option, "disable")) { struct nvme_set_features_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = fid, .nsid = 1, .cdw11 = 0, @@ -2845,7 +2845,7 @@ static int micron_telemetry_cntrl_option(int argc, char **argv, } else if (!strcmp(opt.option, "status")) { struct nvme_get_features_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = fid, .nsid = 1, .sel = opt.select & 0x3, @@ -3160,7 +3160,7 @@ static int micron_internal_logs(int argc, char **argv, struct command *cmd, goto out; } - err = nvme_identify_ctrl(dev->fd, &ctrl); + err = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (err) goto out; @@ -3172,7 +3172,7 @@ static int micron_internal_logs(int argc, char **argv, struct command *cmd, goto out; } int logSize = 0; __u8 *buffer = NULL; const char *dir = "."; - err = micron_telemetry_log(dev->fd, cfg.log, &buffer, &logSize, + err = micron_telemetry_log(dev_fd(dev), cfg.log, &buffer, &logSize, cfg.data_area); if (err == 0 && logSize > 0 && buffer != NULL) { sprintf(msg, "telemetry log: 0x%X", cfg.log); @@ -3202,16 +3202,16 @@ static int micron_internal_logs(int argc, char **argv, struct command *cmd, GetDriveInfo(strOSDirName, ctrlIdx, &ctrl); for (int i = 1; i <= ctrl.nn; i++) - GetNSIDDInfo(dev->fd, strCtrlDirName, i); + GetNSIDDInfo(dev_fd(dev), strCtrlDirName, i); - GetSmartlogData(dev->fd, strCtrlDirName); - GetErrorlogData(dev->fd, ctrl.elpe, strCtrlDirName); - GetGenericLogs(dev->fd, strCtrlDirName); + GetSmartlogData(dev_fd(dev), strCtrlDirName); + GetErrorlogData(dev_fd(dev), ctrl.elpe, strCtrlDirName); + GetGenericLogs(dev_fd(dev), strCtrlDirName); /* pull if telemetry log data is supported */ if ((ctrl.lpa & 0x8) == 0x8) - GetTelemetryData(dev->fd, strCtrlDirName); + GetTelemetryData(dev_fd(dev), strCtrlDirName); - GetFeatureSettings(dev->fd, strCtrlDirName); + GetFeatureSettings(dev_fd(dev), strCtrlDirName); if (eModel != M5410 && eModel != M5407) { memcpy(&aVendorLogs[c_logs_index], aM51XXLogs, sizeof(aM51XXLogs)); @@ -3239,16 +3239,18 @@ static int micron_internal_logs(int argc, char **argv, struct command *cmd, case 0xE4: case 0xE8: case 0xEA: - err = get_common_log(dev->fd, aVendorLogs[i].ucLogPage, + err = get_common_log(dev_fd(dev), aVendorLogs[i].ucLogPage, &dataBuffer, &bSize); break; case 0xC1: case 0xC2: case 0xC4: - err = GetLogPageSize(dev->fd, aVendorLogs[i].ucLogPage, &bSize); + err = GetLogPageSize(dev_fd(dev), aVendorLogs[i].ucLogPage, + &bSize); if (err == 0 && bSize > 0) - err = GetCommonLogPage(dev->fd, aVendorLogs[i].ucLogPage, &dataBuffer, bSize); + err = GetCommonLogPage(dev_fd(dev), aVendorLogs[i].ucLogPage, + &dataBuffer, bSize); break; case 0xE6: @@ -3267,9 +3269,12 @@ static int micron_internal_logs(int argc, char **argv, struct command *cmd, if (bSize != 0 && (dataBuffer = (unsigned char *)malloc(bSize)) != NULL) { memset(dataBuffer, 0, bSize); if (eModel == M5410 || eModel == M5407) - err = NVMEGetLogPage(dev->fd, aVendorLogs[i].ucLogPage, dataBuffer, bSize); + err = NVMEGetLogPage(dev_fd(dev), + aVendorLogs[i].ucLogPage, dataBuffer, + bSize); else - err = nvme_get_log_simple(dev->fd, aVendorLogs[i].ucLogPage, + err = nvme_get_log_simple(dev_fd(dev), + aVendorLogs[i].ucLogPage, bSize, dataBuffer); } break; @@ -3279,7 +3284,7 @@ static int micron_internal_logs(int argc, char **argv, struct command *cmd, case 0xFC: case 0xFD: if (eModel == M51BX) { - (void)NVMEResetLog(dev->fd, aVendorLogs[i].ucLogPage, + (void)NVMEResetLog(dev_fd(dev), aVendorLogs[i].ucLogPage, aVendorLogs[i].nLogSize, aVendorLogs[i].nMaxSize); } /* fallthrough */ @@ -3290,13 +3295,14 @@ static int micron_internal_logs(int argc, char **argv, struct command *cmd, break; } memset(dataBuffer, 0, bSize); - err = nvme_get_log_simple(dev->fd, aVendorLogs[i].ucLogPage, + err = nvme_get_log_simple(dev_fd(dev), aVendorLogs[i].ucLogPage, bSize, dataBuffer); maxSize = aVendorLogs[i].nMaxSize - bSize; while (err == 0 && maxSize > 0 && ((unsigned int *)dataBuffer)[0] != 0xdeadbeef) { sprintf(msg, "log 0x%x", aVendorLogs[i].ucLogPage); WriteData(dataBuffer, bSize, strCtrlDirName, aVendorLogs[i].strFileName, msg); - err = nvme_get_log_simple(dev->fd, aVendorLogs[i].ucLogPage, + err = nvme_get_log_simple(dev_fd(dev), + aVendorLogs[i].ucLogPage, bSize, dataBuffer); if (err || (((unsigned int *)dataBuffer)[0] == 0xdeadbeef)) break; @@ -3379,7 +3385,7 @@ static int micron_logpage_dir(int argc, char **argv, struct command *cmd, printf("Supported log page list\nLog ID : Description\n"); for (i = 0; i < sizeof(log_list)/sizeof(log_list[0]); i++) { - err = nvme_get_log_simple(dev->fd, log_list[i].log_id, + err = nvme_get_log_simple(dev_fd(dev), log_list[i].log_id, MIN_LOG_SIZE, &logbuf[0]); if (err) continue; printf("%02Xh : %s\n", log_list[i].log_id, log_list[i].desc); diff --git a/plugins/ocp/ocp-nvme.c b/plugins/ocp/ocp-nvme.c index ac8239c3..b91fe9e4 100644 --- a/plugins/ocp/ocp-nvme.c +++ b/plugins/ocp/ocp-nvme.c @@ -421,7 +421,7 @@ static int ocp_smart_add_log(int argc, char **argv, struct command *cmd, if (ret < 0) return ret; - ret = get_c0_log_page(dev->fd, cfg.output_format); + ret = get_c0_log_page(dev_fd(dev), cfg.output_format); if (ret) fprintf(stderr, "ERROR : OCP : Failure reading the C0 Log Page, ret = %d\n", ret); @@ -683,8 +683,8 @@ static int get_c3_log_page(struct nvme_dev *dev, char *format) } memset(data, 0, sizeof (__u8) * C3_LATENCY_MON_LOG_BUF_LEN); - ret = nvme_get_log_simple(dev->fd, C3_LATENCY_MON_OPCODE, - C3_LATENCY_MON_LOG_BUF_LEN, data); + ret = nvme_get_log_simple(dev_fd(dev), C3_LATENCY_MON_OPCODE, + C3_LATENCY_MON_LOG_BUF_LEN, data); if (strcmp(format, "json")) fprintf(stderr, diff --git a/plugins/scaleflux/sfx-nvme.c b/plugins/scaleflux/sfx-nvme.c index 44f4feaf..0c41df5c 100644 --- a/plugins/scaleflux/sfx-nvme.c +++ b/plugins/scaleflux/sfx-nvme.c @@ -427,8 +427,8 @@ static int get_additional_smart_log(int argc, char **argv, struct command *cmd, if (err < 0) return err; - err = nvme_get_nsid_log(dev->fd, false, 0xca, cfg.namespace_id, - sizeof(smart_log), (void *)&smart_log); + err = nvme_get_nsid_log(dev_fd(dev), false, 0xca, cfg.namespace_id, + sizeof(smart_log), (void *)&smart_log); if (!err) { if (cfg.json) show_sfx_smart_log_jsn(&smart_log, cfg.namespace_id, @@ -641,7 +641,7 @@ static int get_lat_stats_log(int argc, char **argv, struct command *cmd, struct if (err < 0) return err; - err = nvme_get_log_simple(dev->fd, cfg.write ? 0xc3 : 0xc1, + err = nvme_get_log_simple(dev_fd(dev), cfg.write ? 0xc3 : 0xc1, sizeof(stats), (void *)&stats); if (!err) { if ((stats.ver.maj == VANDA_MAJOR_IDX) && (stats.ver.min == VANDA_MINOR_IDX)) { @@ -788,7 +788,7 @@ static int sfx_get_bad_block(int argc, char **argv, struct command *cmd, struct return -1; } - err = get_bb_table(dev->fd, 0xffffffff, data_buf, buf_size); + err = get_bb_table(dev_fd(dev), 0xffffffff, data_buf, buf_size); if (err < 0) { perror("get-bad-block"); } else if (err != 0) { @@ -838,7 +838,7 @@ static int query_cap_info(int argc, char **argv, struct command *cmd, struct plu if (err < 0) return err; - if (nvme_query_cap(dev->fd, 0xffffffff, sizeof(ctx), &ctx)) { + if (nvme_query_cap(dev_fd(dev), 0xffffffff, sizeof(ctx), &ctx)) { perror("sfx-query-cap"); err = -1; } @@ -980,7 +980,7 @@ static int change_cap(int argc, char **argv, struct command *cmd, struct plugin printf("%dG %"PRIu64"B %"PRIu64" 4K\n", cfg.capacity_in_gb, (uint64_t)cfg.cap_in_byte, (uint64_t)cap_in_4k); - if (change_sanity_check(dev->fd, cap_in_4k, &shrink)) { + if (change_sanity_check(dev_fd(dev), cap_in_4k, &shrink)) { printf("ScaleFlux change-capacity: fail\n"); dev_close(dev); return err; @@ -991,14 +991,14 @@ static int change_cap(int argc, char **argv, struct command *cmd, struct plugin return 0; } - err = nvme_change_cap(dev->fd, 0xffffffff, cap_in_4k); + err = nvme_change_cap(dev_fd(dev), 0xffffffff, cap_in_4k); if (err < 0) perror("sfx-change-cap"); else if (err != 0) nvme_show_status(err); else { printf("ScaleFlux change-capacity: success\n"); - ioctl(dev->fd, BLKRRPART); + ioctl(dev_fd(dev), BLKRRPART); } dev_close(dev); return err; @@ -1101,14 +1101,15 @@ static int sfx_set_feature(int argc, char **argv, struct command *cmd, struct pl dev_close(dev); return 0; } else { - return sfx_clean_card(dev->fd); + return sfx_clean_card(dev_fd(dev)); } } if (cfg.feature_id == SFX_FEAT_ATOMIC && cfg.value != 0) { if (cfg.namespace_id != 0xffffffff) { - err = nvme_identify_ns(dev->fd, cfg.namespace_id, &ns); + err = nvme_identify_ns(dev_fd(dev), cfg.namespace_id, + &ns); if (err) { if (err < 0) perror("identify-namespace"); @@ -1140,7 +1141,8 @@ static int sfx_set_feature(int argc, char **argv, struct command *cmd, struct pl } } - err = nvme_sfx_set_features(dev->fd, cfg.namespace_id, cfg.feature_id, + err = nvme_sfx_set_features(dev_fd(dev), cfg.namespace_id, + cfg.feature_id, cfg.value); if (err < 0) { @@ -1192,7 +1194,8 @@ static int sfx_get_feature(int argc, char **argv, struct command *cmd, struct pl return EINVAL; } - err = nvme_sfx_get_features(dev->fd, cfg.namespace_id, cfg.feature_id, &result); + err = nvme_sfx_get_features(dev_fd(dev), cfg.namespace_id, + cfg.feature_id, &result); if (err < 0) { perror("ScaleFlux-get-feature"); dev_close(dev); diff --git a/plugins/seagate/seagate-nvme.c b/plugins/seagate/seagate-nvme.c index 179a7e6e..418f18a6 100644 --- a/plugins/seagate/seagate-nvme.c +++ b/plugins/seagate/seagate-nvme.c @@ -178,7 +178,7 @@ static int log_pages_supp(int argc, char **argv, struct command *cmd, err = parse_and_open(&dev, argc, argv, desc, opts); if (err < 0) return err; - err = nvme_get_log_simple(dev->fd, 0xc5, + err = nvme_get_log_simple(dev_fd(dev), 0xc5, sizeof(logPageMap), &logPageMap); if (!err) { if (strcmp(cfg.output_format,"json")) { @@ -746,7 +746,7 @@ static int vs_smart_log(int argc, char **argv, struct command *cmd, struct plugi if (strcmp(cfg.output_format,"json")) printf("Seagate Extended SMART Information :\n"); - err = nvme_get_log_simple(dev->fd, 0xC4, + err = nvme_get_log_simple(dev_fd(dev), 0xC4, sizeof(ExtdSMARTInfo), &ExtdSMARTInfo); if (!err) { if (strcmp(cfg.output_format,"json")) { @@ -769,7 +769,7 @@ static int vs_smart_log(int argc, char **argv, struct command *cmd, struct plugi * Next get Log Page 0xCF */ - err = nvme_get_log_simple(dev->fd, 0xCF, + err = nvme_get_log_simple(dev_fd(dev), 0xCF, sizeof(logPageCF), &logPageCF); if (!err) { if(strcmp(cfg.output_format,"json")) { @@ -851,7 +851,7 @@ static int temp_stats(int argc, char **argv, struct command *cmd, struct plugin if(strcmp(cfg.output_format,"json")) printf("Seagate Temperature Stats Information :\n"); /*STEP-1 : Get Current Temperature from SMART */ - err = nvme_get_log_smart(dev->fd, 0xffffffff, false, &smart_log); + err = nvme_get_log_smart(dev_fd(dev), 0xffffffff, false, &smart_log); if (!err) { temperature = ((smart_log.temperature[1] << 8) | smart_log.temperature[0]); temperature = temperature ? temperature - 273 : 0; @@ -867,7 +867,7 @@ static int temp_stats(int argc, char **argv, struct command *cmd, struct plugin } /* STEP-2 : Get Max temperature form Ext SMART-id 194 */ - err = nvme_get_log_simple(dev->fd, 0xC4, + err = nvme_get_log_simple(dev_fd(dev), 0xC4, sizeof(ExtdSMARTInfo), &ExtdSMARTInfo); if (!err) { for(index = 0; index < NUMBER_EXTENDED_SMART_ATTRIBUTES; index++) { @@ -889,7 +889,7 @@ static int temp_stats(int argc, char **argv, struct command *cmd, struct plugin else if (err > 0) nvme_show_status(err); - cf_err = nvme_get_log_simple(dev->fd, 0xCF, + cf_err = nvme_get_log_simple(dev_fd(dev), 0xCF, sizeof(ExtdSMARTInfo), &logPageCF); if(!cf_err) { @@ -1025,7 +1025,7 @@ static int vs_pcie_error_log(int argc, char **argv, struct command *cmd, struct if(strcmp(cfg.output_format,"json")) printf("Seagate PCIe error counters Information :\n"); - err = nvme_get_log_simple(dev->fd, 0xCB, + err = nvme_get_log_simple(dev_fd(dev), 0xCB, sizeof(pcieErrorLog), &pcieErrorLog); if (!err) { if(strcmp(cfg.output_format,"json")) { @@ -1068,7 +1068,7 @@ static int vs_clr_pcie_correctable_errs(int argc, char **argv, struct command *c return -1; } - err = nvme_set_features_simple(dev->fd, 0xE1, 0, 0xCB, cfg.save, + err = nvme_set_features_simple(dev_fd(dev), 0xE1, 0, 0xCB, cfg.save, &result); if (err < 0) { @@ -1120,8 +1120,9 @@ static int get_host_tele(int argc, char **argv, struct command *cmd, struct plug dump_fd = STDOUT_FILENO; cfg.log_id = (cfg.log_id << 8) | 0x07; - err = nvme_get_nsid_log(dev->fd, false, cfg.log_id, cfg.namespace_id, - sizeof(tele_log), (void *)(&tele_log)); + err = nvme_get_nsid_log(dev_fd(dev), false, cfg.log_id, + cfg.namespace_id, + sizeof(tele_log), (void *)(&tele_log)); if (!err) { maxBlk = tele_log.tele_data_area3; offset += 512; @@ -1166,7 +1167,7 @@ static int get_host_tele(int argc, char **argv, struct command *cmd, struct plug struct nvme_get_log_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .lid = cfg.log_id, .nsid = cfg.namespace_id, .lpo = offset, @@ -1241,8 +1242,8 @@ static int get_ctrl_tele(int argc, char **argv, struct command *cmd, struct plug dump_fd = STDOUT_FILENO; log_id = 0x08; - err = nvme_get_nsid_log(dev->fd, false, log_id, cfg.namespace_id, - sizeof(tele_log), (void *)(&tele_log)); + err = nvme_get_nsid_log(dev_fd(dev), false, log_id, cfg.namespace_id, + sizeof(tele_log), (void *)(&tele_log)); if (!err) { maxBlk = tele_log.tele_data_area3; offset += 512; @@ -1283,7 +1284,7 @@ static int get_ctrl_tele(int argc, char **argv, struct command *cmd, struct plug struct nvme_get_log_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .lid = log_id, .nsid = cfg.namespace_id, .lpo = offset, @@ -1384,8 +1385,8 @@ static int vs_internal_log(int argc, char **argv, struct command *cmd, struct pl } log_id = 0x08; - err = nvme_get_nsid_log(dev->fd, false, log_id, cfg.namespace_id, - sizeof(tele_log), (void *)(&tele_log)); + err = nvme_get_nsid_log(dev_fd(dev), false, log_id, cfg.namespace_id, + sizeof(tele_log), (void *)(&tele_log)); if (!err) { maxBlk = tele_log.tele_data_area3; offset += 512; @@ -1424,7 +1425,7 @@ static int vs_internal_log(int argc, char **argv, struct command *cmd, struct pl struct nvme_get_log_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .lid = log_id, .nsid = cfg.namespace_id, .lpo = offset, diff --git a/plugins/shannon/shannon-nvme.c b/plugins/shannon/shannon-nvme.c index c1c5b5a9..b433d23f 100644 --- a/plugins/shannon/shannon-nvme.c +++ b/plugins/shannon/shannon-nvme.c @@ -141,8 +141,8 @@ static int get_additional_smart_log(int argc, char **argv, struct command *cmd, err = parse_and_open(&dev, argc, argv, desc, opts); if (err < 0) return err; - err = nvme_get_nsid_log(dev->fd, false, 0xca, cfg.namespace_id, - sizeof(smart_log), &smart_log); + err = nvme_get_nsid_log(dev_fd(dev), false, 0xca, cfg.namespace_id, + sizeof(smart_log), &smart_log); if (!err) { if (!cfg.raw_binary) show_shannon_smart_log(&smart_log, cfg.namespace_id, @@ -235,7 +235,7 @@ static int get_additional_feature(int argc, char **argv, struct command *cmd, st struct nvme_get_features_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = cfg.feature_id, .nsid = cfg.namespace_id, .sel = cfg.sel, @@ -361,7 +361,7 @@ static int set_additional_feature(int argc, char **argv, struct command *cmd, st struct nvme_set_features_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = cfg.feature_id, .nsid = cfg.namespace_id, .cdw11 = cfg.value, diff --git a/plugins/solidigm/solidigm-garbage-collection.c b/plugins/solidigm/solidigm-garbage-collection.c index 9e40c88e..f2223905 100644 --- a/plugins/solidigm/solidigm-garbage-collection.c +++ b/plugins/solidigm/solidigm-garbage-collection.c @@ -93,7 +93,7 @@ int solidigm_get_garbage_collection_log(int argc, char **argv, struct command *c garbage_control_collection_log_t gc_log; const int solidigm_vu_gc_log_id = 0xfd; - err = nvme_get_log_simple(dev->fd, solidigm_vu_gc_log_id, + err = nvme_get_log_simple(dev_fd(dev), solidigm_vu_gc_log_id, sizeof(gc_log), &gc_log); if (!err) { if (flags & BINARY) { diff --git a/plugins/solidigm/solidigm-latency-tracking.c b/plugins/solidigm/solidigm-latency-tracking.c index 17b1c95e..84994139 100644 --- a/plugins/solidigm/solidigm-latency-tracking.c +++ b/plugins/solidigm/solidigm-latency-tracking.c @@ -412,7 +412,7 @@ int solidigm_get_latency_tracking_log(int argc, char **argv, struct command *cmd if (err < 0) return err; - lt.fd = dev->fd; + lt.fd = dev_fd(dev); lt.print_flags = validate_output_format(lt.cfg.output_format); if (lt.print_flags == -EINVAL) { diff --git a/plugins/solidigm/solidigm-smart.c b/plugins/solidigm/solidigm-smart.c index 5e01066e..3cee7d22 100644 --- a/plugins/solidigm/solidigm-smart.c +++ b/plugins/solidigm/solidigm-smart.c @@ -231,7 +231,7 @@ int solidigm_get_additional_smart_log(int argc, char **argv, struct command *cmd return flags; } - err = nvme_get_log_simple(dev->fd, solidigm_vu_smart_log_id, + err = nvme_get_log_simple(dev_fd(dev), solidigm_vu_smart_log_id, sizeof(smart_log_payload), &smart_log_payload); if (!err) { if (flags & JSON) { diff --git a/plugins/toshiba/toshiba-nvme.c b/plugins/toshiba/toshiba-nvme.c index b67bf942..58f1c1c6 100644 --- a/plugins/toshiba/toshiba-nvme.c +++ b/plugins/toshiba/toshiba-nvme.c @@ -388,11 +388,12 @@ static int nvme_get_vendor_log(struct nvme_dev *dev, __u32 namespace_id, } /* Check device supported */ - err = nvme_get_sct_status(dev->fd, MASK_0 | MASK_1); + err = nvme_get_sct_status(dev_fd(dev), MASK_0 | MASK_1); if (err) { goto end; } - err = nvme_get_nsid_log(dev->fd, false, log_page, namespace_id, log_len, log); + err = nvme_get_nsid_log(dev_fd(dev), false, log_page, namespace_id, + log_len, log); if (err) { fprintf(stderr, "%s: couldn't get log 0x%x\n", __func__, log_page); @@ -516,7 +517,7 @@ static int internal_log(int argc, char **argv, struct command *cmd, struct plugi else printf("Getting current log\n"); - err = nvme_get_internal_log_file(dev->fd, cfg.output_file, + err = nvme_get_internal_log_file(dev_fd(dev), cfg.output_file, !cfg.prev_log); if (err < 0) fprintf(stderr, "%s: couldn't get fw log \n", __func__); @@ -551,13 +552,13 @@ static int clear_correctable_errors(int argc, char **argv, struct command *cmd, } /* Check device supported */ - err = nvme_get_sct_status(dev->fd, MASK_0 | MASK_1); + err = nvme_get_sct_status(dev_fd(dev), MASK_0 | MASK_1); if (err) goto end; struct nvme_set_features_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .fid = feature_id, .nsid = namespace_id, .cdw11 = value, diff --git a/plugins/transcend/transcend-nvme.c b/plugins/transcend/transcend-nvme.c index c75e7eea..5a4320c3 100644 --- a/plugins/transcend/transcend-nvme.c +++ b/plugins/transcend/transcend-nvme.c @@ -34,7 +34,7 @@ static int getHealthValue(int argc, char **argv, struct command *cmd, struct plu printf("\nDevice not found \n");; return -1; } - result = nvme_get_log_smart(dev->fd, 0xffffffff, false, &smart_log); + result = nvme_get_log_smart(dev_fd(dev), 0xffffffff, false, &smart_log); if (!result) { printf("Transcend NVME heath value: "); percent_used =smart_log.percent_used; @@ -80,7 +80,7 @@ static int getBadblock(int argc, char **argv, struct command *cmd, struct plugin nvmecmd.cdw12=DW12_BAD_BLOCK; nvmecmd.addr = (__u64)(uintptr_t)data; nvmecmd.data_len = 0x1; - result = nvme_submit_admin_passthru(dev->fd, &nvmecmd, NULL); + result = nvme_submit_admin_passthru(dev_fd(dev), &nvmecmd, NULL); if(!result) { int badblock = data[0]; printf("Transcend NVME badblock count: %d\n",badblock); diff --git a/plugins/virtium/virtium-nvme.c b/plugins/virtium/virtium-nvme.c index d9742ea7..00ca9066 100644 --- a/plugins/virtium/virtium-nvme.c +++ b/plugins/virtium/virtium-nvme.c @@ -986,7 +986,7 @@ static int vt_save_smart_to_vtview_log(int argc, char **argv, struct command *cm printf("Running for %lf hour(s)\n", cfg.run_time_hrs); printf("Logging SMART data for every %lf hour(s)\n", cfg.log_record_frequency_hrs); - ret = vt_update_vtview_log_header(dev->fd, path, &cfg); + ret = vt_update_vtview_log_header(dev_fd(dev), path, &cfg); if (ret) { err = EINVAL; dev_close(dev); @@ -1009,7 +1009,7 @@ static int vt_save_smart_to_vtview_log(int argc, char **argv, struct command *cm if(cur_time >= end_time) break; - ret = vt_add_entry_to_log(dev->fd, path, &cfg); + ret = vt_add_entry_to_log(dev_fd(dev), path, &cfg); if (ret) { printf("Cannot update driver log\n"); break; @@ -1044,7 +1044,7 @@ static int vt_show_identify(int argc, char **argv, struct command *cmd, struct p return err; } - ret = nvme_identify_ctrl(dev->fd, &ctrl); + ret = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (ret) { printf("Cannot read identify device\n"); dev_close(dev); diff --git a/plugins/wdc/wdc-nvme.c b/plugins/wdc/wdc-nvme.c index f1893051..d0c832f6 100644 --- a/plugins/wdc/wdc-nvme.c +++ b/plugins/wdc/wdc-nvme.c @@ -1371,7 +1371,7 @@ static int wdc_get_vendor_id(struct nvme_dev *dev, uint32_t *vendor_id) struct nvme_id_ctrl ctrl; memset(&ctrl, 0, sizeof(struct nvme_id_ctrl)); - ret = nvme_identify_ctrl(dev->fd, &ctrl); + ret = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (ret) { fprintf(stderr, "ERROR : WDC : nvme_identify_ctrl() failed " "0x%x\n", ret); @@ -1394,7 +1394,7 @@ static int wdc_get_model_number(struct nvme_dev *dev, char *model) struct nvme_id_ctrl ctrl; memset(&ctrl, 0, sizeof(struct nvme_id_ctrl)); - ret = nvme_identify_ctrl(dev->fd, &ctrl); + ret = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (ret) { fprintf(stderr, "ERROR : WDC : nvme_identify_ctrl() failed " "0x%x\n", ret); @@ -1790,7 +1790,7 @@ static int wdc_get_serial_name(struct nvme_dev *dev, char *file, size_t len, strncpy(orig, file, PATH_MAX - 1); memset(file, 0, len); memset(&ctrl, 0, sizeof (struct nvme_id_ctrl)); - ret = nvme_identify_ctrl(dev->fd, &ctrl); + ret = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (ret) { fprintf(stderr, "ERROR : WDC : nvme_identify_ctrl() failed " "0x%x\n", ret); @@ -1982,7 +1982,7 @@ static bool get_dev_mgment_cbs_data(nvme_root_t r, struct nvme_dev *dev, /* get the log page length */ struct nvme_get_log_args args_len = { .args_size = sizeof(args_len), - .fd = dev->fd, + .fd = dev_fd(dev), .lid = lid, .nsid = 0xFFFFFFFF, .lpo = 0, @@ -2019,7 +2019,7 @@ static bool get_dev_mgment_cbs_data(nvme_root_t r, struct nvme_dev *dev, /* get the log page data */ struct nvme_get_log_args args_data = { .args_size = sizeof(args_data), - .fd = dev->fd, + .fd = dev_fd(dev), .lid = lid, .nsid = 0xFFFFFFFF, .lpo = 0, @@ -2060,7 +2060,7 @@ static bool get_dev_mgment_cbs_data(nvme_root_t r, struct nvme_dev *dev, /* get the log page data */ struct nvme_get_log_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .lid = lid, .nsid = 0xFFFFFFFF, .lpo = 0, @@ -2160,7 +2160,7 @@ static int wdc_do_clear_dump(struct nvme_dev *dev, __u8 opcode, __u32 cdw12) memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd)); admin_cmd.opcode = opcode; admin_cmd.cdw12 = cdw12; - ret = nvme_submit_admin_passthru(dev->fd, &admin_cmd, NULL); + ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL); if (ret != 0) { fprintf(stdout, "ERROR : WDC : Crash dump erase failed\n"); } @@ -2307,7 +2307,8 @@ static int wdc_do_dump(struct nvme_dev *dev, __u32 opcode,__u32 data_len, admin_cmd.cdw13 = curr_data_offset; while (curr_data_offset < data_len) { - ret = nvme_submit_admin_passthru(dev->fd, &admin_cmd, NULL); + ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, + NULL); if (ret != 0) { nvme_show_status(ret); fprintf(stderr, "%s: ERROR : WDC : Get chunk %d, size = 0x%x, offset = 0x%x, addr = 0x%lx\n", @@ -2417,7 +2418,7 @@ static int wdc_do_cap_telemetry_log(struct nvme_dev *dev, char *file, nvme_root_t r; memset(&ctrl, 0, sizeof (struct nvme_id_ctrl)); - err = nvme_identify_ctrl(dev->fd, &ctrl); + err = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (err) { fprintf(stderr, "ERROR : WDC : nvme_identify_ctrl() failed " "0x%x\n", err); @@ -2438,7 +2439,7 @@ static int wdc_do_cap_telemetry_log(struct nvme_dev *dev, char *file, } else if (type == WDC_TELEMETRY_TYPE_CONTROLLER) { if ((capabilities & WDC_DRIVE_CAP_INTERNAL_LOG) == WDC_DRIVE_CAP_INTERNAL_LOG) { /* Verify the Controller Initiated Option is enabled */ - err = nvme_get_features_data(dev->fd, + err = nvme_get_features_data(dev_fd(dev), WDC_VU_DISABLE_CNTLR_TELEMETRY_OPTION_FEATURE_ID, 0, 4, buf, &result); if (err == 0) { @@ -2480,11 +2481,14 @@ static int wdc_do_cap_telemetry_log(struct nvme_dev *dev, char *file, } if (ctrl_init) - err = nvme_get_ctrl_telemetry(dev->fd, true, &log, data_area, &full_size); + err = nvme_get_ctrl_telemetry(dev_fd(dev), true, &log, + data_area, &full_size); else if (host_gen) - err = nvme_get_new_host_telemetry(dev->fd, &log, data_area, &full_size); + err = nvme_get_new_host_telemetry(dev_fd(dev), &log, + data_area, &full_size); else - err = nvme_get_host_telemetry(dev->fd, &log, data_area, &full_size); + err = nvme_get_host_telemetry(dev_fd(dev), &log, data_area, + &full_size); if (err < 0) { perror("get-telemetry-log"); @@ -2548,7 +2552,8 @@ static int wdc_do_cap_diag(nvme_root_t r, struct nvme_dev *dev, char *file, memset(log_hdr, 0, e6_log_hdr_size); if (type == WDC_TELEMETRY_TYPE_NONE) { - ret = wdc_dump_length_e6(dev->fd, WDC_NVME_CAP_DIAG_OPCODE, + ret = wdc_dump_length_e6(dev_fd(dev), + WDC_NVME_CAP_DIAG_OPCODE, WDC_NVME_CAP_DIAG_HEADER_TOC_SIZE>>2, 0x00, log_hdr); @@ -2563,7 +2568,9 @@ static int wdc_do_cap_diag(nvme_root_t r, struct nvme_dev *dev, char *file, if (cap_diag_length == 0) { fprintf(stderr, "INFO : WDC : Capture Diagnostics log is empty\n"); } else { - ret = wdc_do_dump_e6(dev->fd, WDC_NVME_CAP_DIAG_OPCODE, cap_diag_length, + ret = wdc_do_dump_e6(dev_fd(dev), + WDC_NVME_CAP_DIAG_OPCODE, + cap_diag_length, (WDC_NVME_CAP_DIAG_SUBCMD << WDC_NVME_SUBCMD_SHIFT) | WDC_NVME_CAP_DIAG_CMD, file, xfer_size, (__u8 *)log_hdr); @@ -3408,7 +3415,8 @@ static int wdc_vs_internal_fw_log(int argc, char **argv, struct command *command /* FW requirement - xfer size must be 256k for data area 4 */ if (cfg.data_area >= 4) xfer_size = 0x40000; - ret = wdc_do_cap_dui(dev->fd, f, xfer_size, cfg.data_area, + ret = wdc_do_cap_dui(dev_fd(dev), f, xfer_size, + cfg.data_area, cfg.verbose, cfg.file_size, cfg.offset); goto out; @@ -3424,14 +3432,14 @@ static int wdc_vs_internal_fw_log(int argc, char **argv, struct command *command telemetry_type, telemetry_data_area); goto out; } else { - ret = wdc_do_cap_dui(dev->fd, f, xfer_size, + ret = wdc_do_cap_dui(dev_fd(dev), f, xfer_size, WDC_NVME_DUI_MAX_DATA_AREA, cfg.verbose, 0, 0); goto out; } } if ((capabilities & WDC_SN730B_CAP_VUC_LOG) == WDC_SN730B_CAP_VUC_LOG) - ret = wdc_do_sn730_get_and_tar(dev->fd, f); + ret = wdc_do_sn730_get_and_tar(dev_fd(dev), f); else { fprintf(stderr, "ERROR : WDC: unsupported device for this command\n"); ret = -1; @@ -3479,11 +3487,11 @@ static int wdc_do_crash_dump(struct nvme_dev *dev, char *file, int type) WDC_NVME_CLEAR_CRASH_DUMP_CMD); } - ret = wdc_dump_length(dev->fd, - opcode, - cdw10_size, - cdw12_size, - &crash_dump_length); + ret = wdc_dump_length(dev_fd(dev), + opcode, + cdw10_size, + cdw12_size, + &crash_dump_length); if (ret == -1) { if (type == WDC_NVME_PFAIL_DUMP_TYPE) @@ -3544,11 +3552,11 @@ static int wdc_do_drive_log(struct nvme_dev *dev, char *file) __u32 drive_log_length; struct nvme_passthru_cmd admin_cmd; - ret = wdc_dump_length(dev->fd, WDC_NVME_DRIVE_LOG_SIZE_OPCODE, - WDC_NVME_DRIVE_LOG_SIZE_NDT, - (WDC_NVME_DRIVE_LOG_SIZE_SUBCMD << - WDC_NVME_SUBCMD_SHIFT | WDC_NVME_DRIVE_LOG_SIZE_CMD), - &drive_log_length); + ret = wdc_dump_length(dev_fd(dev), WDC_NVME_DRIVE_LOG_SIZE_OPCODE, + WDC_NVME_DRIVE_LOG_SIZE_NDT, + (WDC_NVME_DRIVE_LOG_SIZE_SUBCMD << + WDC_NVME_SUBCMD_SHIFT | WDC_NVME_DRIVE_LOG_SIZE_CMD), + &drive_log_length); if (ret == -1) { return -1; } @@ -3568,7 +3576,7 @@ static int wdc_do_drive_log(struct nvme_dev *dev, char *file) admin_cmd.cdw12 = ((WDC_NVME_DRIVE_LOG_SUBCMD << WDC_NVME_SUBCMD_SHIFT) | WDC_NVME_DRIVE_LOG_SIZE_CMD); - ret = nvme_submit_admin_passthru(dev->fd, &admin_cmd, NULL); + ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL); nvme_show_status(ret); if (ret == 0) { ret = wdc_create_log_file(file, drive_log_data, drive_log_length); @@ -3816,7 +3824,8 @@ static int wdc_purge(int argc, char **argv, memset(&admin_cmd, 0, sizeof (admin_cmd)); admin_cmd.opcode = WDC_NVME_PURGE_CMD_OPCODE; - ret = nvme_submit_admin_passthru(dev->fd, &admin_cmd, NULL); + ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, + NULL); if (ret > 0) { switch (ret) { case WDC_NVME_PURGE_CMD_SEQ_ERR: @@ -3880,7 +3889,8 @@ static int wdc_purge_monitor(int argc, char **argv, admin_cmd.cdw10 = WDC_NVME_PURGE_MONITOR_CMD_CDW10; admin_cmd.timeout_ms = WDC_NVME_PURGE_MONITOR_TIMEOUT; - ret = nvme_submit_admin_passthru(dev->fd, &admin_cmd, NULL); + ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, + NULL); if (ret == 0) { mon = (struct wdc_nvme_purge_monitor_data *) output; printf("Purge state = 0x%0x\n", admin_cmd.result); @@ -4056,7 +4066,7 @@ static int wdc_print_latency_monitor_log_normal(struct nvme_dev *dev, struct nvme_id_ctrl ctrl; char ts_buf[128]; - err = nvme_identify_ctrl(dev->fd, &ctrl); + err = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (!err) printf(" Serial Number: %-.*s\n", (int)sizeof(ctrl.sn), ctrl.sn); else { @@ -6228,7 +6238,8 @@ static int wdc_get_c0_log_page(nvme_root_t r, struct nvme_dev *dev, char *format } if (namespace_id == NVME_NSID_ALL) { - ret = nvme_get_nsid(dev->fd, &namespace_id); + ret = nvme_get_nsid(dev_fd(dev), + &namespace_id); if (ret < 0) { namespace_id = NVME_NSID_ALL; } @@ -6237,7 +6248,7 @@ static int wdc_get_c0_log_page(nvme_root_t r, struct nvme_dev *dev, char *format /* Get the 0xC0 log data */ struct nvme_get_log_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .lid = WDC_NVME_GET_EOL_STATUS_LOG_OPCODE, .nsid = namespace_id, .lpo = 0, @@ -6300,7 +6311,7 @@ static int wdc_get_c0_log_page(nvme_root_t r, struct nvme_dev *dev, char *format /* Get the 0xC0 log data */ struct nvme_get_log_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .lid = WDC_NVME_GET_EOL_STATUS_LOG_OPCODE, .nsid = NVME_NSID_ALL, .lpo = 0, @@ -6341,8 +6352,10 @@ static int wdc_get_c0_log_page(nvme_root_t r, struct nvme_dev *dev, char *format } /* Get the 0xC0 log data */ - ret = nvme_get_log_simple(dev->fd, WDC_NVME_GET_EOL_STATUS_LOG_OPCODE, - WDC_NVME_EOL_STATUS_LOG_LEN, data); + ret = nvme_get_log_simple(dev_fd(dev), + WDC_NVME_GET_EOL_STATUS_LOG_OPCODE, + WDC_NVME_EOL_STATUS_LOG_LEN, + data); if (strcmp(format, "json")) nvme_show_status(ret); @@ -6367,8 +6380,9 @@ static int wdc_get_c0_log_page(nvme_root_t r, struct nvme_dev *dev, char *format } /* Get the 0xC0 log data */ - ret = nvme_get_log_simple(dev->fd, WDC_NVME_GET_SMART_CLOUD_ATTR_LOG_OPCODE, - WDC_NVME_SMART_CLOUD_ATTR_LEN, data); + ret = nvme_get_log_simple(dev_fd(dev), + WDC_NVME_GET_SMART_CLOUD_ATTR_LOG_OPCODE, + WDC_NVME_SMART_CLOUD_ATTR_LEN, data); if (strcmp(format, "json")) nvme_show_status(ret); @@ -6387,7 +6401,8 @@ static int wdc_get_c0_log_page(nvme_root_t r, struct nvme_dev *dev, char *format case WDC_NVME_SN820CL_DEV_ID: /* Get the 0xC0 Extended Smart Cloud Attribute log data */ data = NULL; - ret = nvme_get_ext_smart_cloud_log(dev->fd, &data, uuid_index, namespace_id); + ret = nvme_get_ext_smart_cloud_log(dev_fd(dev), &data, + uuid_index, namespace_id); if (strcmp(format, "json")) nvme_show_status(ret); @@ -6601,8 +6616,9 @@ static int wdc_get_ca_log_page(nvme_root_t r, struct nvme_dev *dev, char *format memset(data, 0, sizeof (__u8) * WDC_FB_CA_LOG_BUF_LEN); - ret = nvme_get_log_simple(dev->fd, WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE, - WDC_FB_CA_LOG_BUF_LEN, data); + ret = nvme_get_log_simple(dev_fd(dev), + WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE, + WDC_FB_CA_LOG_BUF_LEN, data); if (strcmp(format, "json")) nvme_show_status(ret); @@ -6637,8 +6653,9 @@ static int wdc_get_ca_log_page(nvme_root_t r, struct nvme_dev *dev, char *format memset(data, 0, sizeof (__u8) * WDC_FB_CA_LOG_BUF_LEN); - ret = nvme_get_log_simple(dev->fd, WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE, - WDC_FB_CA_LOG_BUF_LEN, data); + ret = nvme_get_log_simple(dev_fd(dev), + WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE, + WDC_FB_CA_LOG_BUF_LEN, data); if (strcmp(format, "json")) nvme_show_status(ret); @@ -6658,8 +6675,9 @@ static int wdc_get_ca_log_page(nvme_root_t r, struct nvme_dev *dev, char *format } memset(data, 0, sizeof (__u8) * WDC_BD_CA_LOG_BUF_LEN); - ret = nvme_get_log_simple(dev->fd, WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE, - WDC_BD_CA_LOG_BUF_LEN, data); + ret = nvme_get_log_simple(dev_fd(dev), + WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE, + WDC_BD_CA_LOG_BUF_LEN, data); if (strcmp(format, "json")) nvme_show_status(ret); @@ -6723,8 +6741,8 @@ static int wdc_get_c1_log_page(nvme_root_t r, struct nvme_dev *dev, } memset(data, 0, sizeof (__u8) * WDC_ADD_LOG_BUF_LEN); - ret = nvme_get_log_simple(dev->fd, WDC_NVME_ADD_LOG_OPCODE, - WDC_ADD_LOG_BUF_LEN, data); + ret = nvme_get_log_simple(dev_fd(dev), WDC_NVME_ADD_LOG_OPCODE, + WDC_ADD_LOG_BUF_LEN, data); if (strcmp(format, "json")) nvme_show_status(ret); if (ret == 0) { @@ -6771,7 +6789,7 @@ static int wdc_get_c3_log_page(nvme_root_t r, struct nvme_dev *dev, char *format } memset(data, 0, sizeof (__u8) * WDC_LATENCY_MON_LOG_BUF_LEN); - ret = nvme_get_log_simple(dev->fd, WDC_LATENCY_MON_OPCODE, + ret = nvme_get_log_simple(dev_fd(dev), WDC_LATENCY_MON_OPCODE, WDC_LATENCY_MON_LOG_BUF_LEN, data); if (strcmp(format, "json")) @@ -6842,8 +6860,8 @@ static int wdc_get_ocp_c1_log_page(nvme_root_t r, struct nvme_dev *dev, char *fo } memset(data, 0, sizeof (__u8) * WDC_ERROR_REC_LOG_BUF_LEN); - ret = nvme_get_log_simple(dev->fd, WDC_ERROR_REC_LOG_ID, - WDC_ERROR_REC_LOG_BUF_LEN, data); + ret = nvme_get_log_simple(dev_fd(dev), WDC_ERROR_REC_LOG_ID, + WDC_ERROR_REC_LOG_BUF_LEN, data); if (strcmp(format, "json")) fprintf(stderr, "NVMe Status:%s(%x)\n", nvme_status_to_string(ret, false), ret); @@ -6911,8 +6929,8 @@ static int wdc_get_ocp_c4_log_page(nvme_root_t r, struct nvme_dev *dev, char *fo } memset(data, 0, sizeof (__u8) * WDC_DEV_CAP_LOG_BUF_LEN); - ret = nvme_get_log_simple(dev->fd, WDC_DEV_CAP_LOG_ID, - WDC_DEV_CAP_LOG_BUF_LEN, data); + ret = nvme_get_log_simple(dev_fd(dev), WDC_DEV_CAP_LOG_ID, + WDC_DEV_CAP_LOG_BUF_LEN, data); if (strcmp(format, "json")) fprintf(stderr, "NVMe Status:%s(%x)\n", nvme_status_to_string(ret, false), ret); @@ -6980,8 +6998,8 @@ static int wdc_get_ocp_c5_log_page(nvme_root_t r, struct nvme_dev *dev, char *fo } memset(data, 0, sizeof (__u8) * WDC_UNSUPPORTED_REQS_LOG_BUF_LEN); - ret = nvme_get_log_simple(dev->fd, WDC_UNSUPPORTED_REQS_LOG_ID, - WDC_UNSUPPORTED_REQS_LOG_BUF_LEN, data); + ret = nvme_get_log_simple(dev_fd(dev), WDC_UNSUPPORTED_REQS_LOG_ID, + WDC_UNSUPPORTED_REQS_LOG_BUF_LEN, data); if (strcmp(format, "json")) fprintf(stderr, "NVMe Status:%s(%x)\n", nvme_status_to_string(ret, false), ret); @@ -7054,8 +7072,9 @@ static int wdc_get_d0_log_page(nvme_root_t r, struct nvme_dev *dev, char *format } memset(data, 0, sizeof (__u8) * WDC_NVME_VU_SMART_LOG_LEN); - ret = nvme_get_log_simple(dev->fd, WDC_NVME_GET_VU_SMART_LOG_OPCODE, - WDC_NVME_VU_SMART_LOG_LEN, data); + ret = nvme_get_log_simple(dev_fd(dev), + WDC_NVME_GET_VU_SMART_LOG_OPCODE, + WDC_NVME_VU_SMART_LOG_LEN, data); if (strcmp(format, "json")) nvme_show_status(ret); @@ -7249,7 +7268,8 @@ static int wdc_vs_cloud_log(int argc, char **argv, struct command *command, } data = NULL; - ret = nvme_get_ext_smart_cloud_log(dev->fd, &data, 0, cfg.namespace_id); + ret = nvme_get_ext_smart_cloud_log(dev_fd(dev), &data, 0, + cfg.namespace_id); if (strcmp(cfg.output_format, "json")) nvme_show_status(ret); @@ -7318,7 +7338,7 @@ static int wdc_vs_hw_rev_log(int argc, char **argv, struct command *command, goto out; } - ret = nvme_get_hw_rev_log(dev->fd, &data, 0, cfg.namespace_id); + ret = nvme_get_hw_rev_log(dev_fd(dev), &data, 0, cfg.namespace_id); if (strcmp(cfg.output_format, "json")) nvme_show_status(ret); @@ -7410,7 +7430,8 @@ static int wdc_vs_device_waf(int argc, char **argv, struct command *command, } /* get data units written from the smart log page */ - ret = nvme_get_log_smart(dev->fd, cfg.namespace_id, false, &smart_log); + ret = nvme_get_log_smart(dev_fd(dev), cfg.namespace_id, false, + &smart_log); if (!ret) { data_units_written = int128_to_double(smart_log.data_units_written); } @@ -7426,7 +7447,8 @@ static int wdc_vs_device_waf(int argc, char **argv, struct command *command, /* get Physical Media Units Written from extended smart/C0 log page */ data = NULL; - ret = nvme_get_ext_smart_cloud_log(dev->fd, &data, 0, cfg.namespace_id); + ret = nvme_get_ext_smart_cloud_log(dev_fd(dev), &data, 0, + cfg.namespace_id); if (ret == 0) { ext_smart_log_ptr = (wdc_nvme_ext_smart_log *)data; @@ -7735,13 +7757,13 @@ static int wdc_clear_pcie_correctable_errors(int argc, char **argv, struct comma } if (capabilities & WDC_DRIVE_CAP_CLEAR_PCIE) { - ret = wdc_do_clear_pcie_correctable_errors(dev->fd); + ret = wdc_do_clear_pcie_correctable_errors(dev_fd(dev)); } else if (capabilities & WDC_DRIVE_CAP_VUC_CLEAR_PCIE) { - ret = wdc_do_clear_pcie_correctable_errors_vuc(dev->fd); + ret = wdc_do_clear_pcie_correctable_errors_vuc(dev_fd(dev)); } else { - ret = wdc_do_clear_pcie_correctable_errors_fid(dev->fd); + ret = wdc_do_clear_pcie_correctable_errors_fid(dev_fd(dev)); } out: @@ -7909,7 +7931,8 @@ static int wdc_clear_assert_dump(int argc, char **argv, struct command *command, admin_cmd.cdw12 = ((WDC_NVME_CLEAR_ASSERT_DUMP_SUBCMD << WDC_NVME_SUBCMD_SHIFT) | WDC_NVME_CLEAR_ASSERT_DUMP_CMD); - ret = nvme_submit_admin_passthru(dev->fd, &admin_cmd, NULL); + ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, + NULL); nvme_show_status(ret); } else fprintf(stderr, "INFO : WDC : No Assert Dump Present\n"); @@ -7950,8 +7973,9 @@ static int wdc_get_fw_act_history(nvme_root_t r, struct nvme_dev *dev, memset(data, 0, sizeof (__u8) * WDC_FW_ACT_HISTORY_LOG_BUF_LEN); - ret = nvme_get_log_simple(dev->fd, WDC_NVME_GET_FW_ACT_HISTORY_LOG_ID, - WDC_FW_ACT_HISTORY_LOG_BUF_LEN, data); + ret = nvme_get_log_simple(dev_fd(dev), + WDC_NVME_GET_FW_ACT_HISTORY_LOG_ID, + WDC_FW_ACT_HISTORY_LOG_BUF_LEN, data); if (strcmp(format, "json")) nvme_show_status(ret); @@ -8024,8 +8048,9 @@ static int wdc_get_fw_act_history_C2(nvme_root_t r, struct nvme_dev *dev, memset(data, 0, sizeof (__u8) * WDC_FW_ACT_HISTORY_C2_LOG_BUF_LEN); - ret = nvme_get_log_simple(dev->fd, WDC_NVME_GET_FW_ACT_HISTORY_C2_LOG_ID, - WDC_FW_ACT_HISTORY_C2_LOG_BUF_LEN, data); + ret = nvme_get_log_simple(dev_fd(dev), + WDC_NVME_GET_FW_ACT_HISTORY_C2_LOG_ID, + WDC_FW_ACT_HISTORY_C2_LOG_BUF_LEN, data); if (strcmp(format, "json")) nvme_show_status(ret); @@ -8111,7 +8136,7 @@ static int wdc_vs_fw_activate_history(int argc, char **argv, struct command *com /* Get the 0xC0 log data */ struct nvme_get_log_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .lid = WDC_NVME_GET_SMART_CLOUD_ATTR_LOG_OPCODE, .nsid = 0xFFFFFFFF, .lpo = 0, @@ -8218,9 +8243,9 @@ static int wdc_clear_fw_activate_history(int argc, char **argv, struct command * } if (capabilities & WDC_DRIVE_CAP_CLEAR_FW_ACT_HISTORY) - ret = wdc_do_clear_fw_activate_history_vuc(dev->fd); + ret = wdc_do_clear_fw_activate_history_vuc(dev_fd(dev)); else - ret = wdc_do_clear_fw_activate_history_fid(dev->fd); + ret = wdc_do_clear_fw_activate_history_fid(dev_fd(dev)); out: nvme_free_tree(r); @@ -8282,7 +8307,7 @@ static int wdc_vs_telemetry_controller_option(int argc, char **argv, struct comm } if (cfg.disable) { - ret = nvme_set_features_simple(dev->fd, + ret = nvme_set_features_simple(dev_fd(dev), WDC_VU_DISABLE_CNTLR_TELEMETRY_OPTION_FEATURE_ID, 0, 1, false, &result); @@ -8290,12 +8315,12 @@ static int wdc_vs_telemetry_controller_option(int argc, char **argv, struct comm } else { if (cfg.enable) { - ret = nvme_set_features_simple(dev->fd, + ret = nvme_set_features_simple(dev_fd(dev), WDC_VU_DISABLE_CNTLR_TELEMETRY_OPTION_FEATURE_ID, 0, 0, false, &result); } else if (cfg.status) { - ret = nvme_get_features_simple(dev->fd, + ret = nvme_get_features_simple(dev_fd(dev), WDC_VU_DISABLE_CNTLR_TELEMETRY_OPTION_FEATURE_ID, 0, &result); if (ret == 0) { @@ -8333,7 +8358,7 @@ static int wdc_get_serial_and_fw_rev(struct nvme_dev *dev, char *sn, char *fw_re memset(sn, 0, WDC_SERIAL_NO_LEN); memset(fw_rev, 0, WDC_NVME_FIRMWARE_REV_LEN); memset(&ctrl, 0, sizeof (struct nvme_id_ctrl)); - ret = nvme_identify_ctrl(dev->fd, &ctrl); + ret = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (ret) { fprintf(stderr, "ERROR : WDC : nvme_identify_ctrl() failed " "0x%x\n", ret); @@ -8358,7 +8383,7 @@ static int wdc_get_max_transfer_len(struct nvme_dev *dev, __u32 *maxTransferLen) __u32 maxTransferLenDevice = 0; memset(&ctrl, 0, sizeof (struct nvme_id_ctrl)); - ret = nvme_identify_ctrl(dev->fd, &ctrl); + ret = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (ret) { fprintf(stderr, "ERROR : WDC : nvme_identify_ctrl() failed 0x%x\n", ret); return -1; @@ -8388,7 +8413,7 @@ static int wdc_de_VU_read_size(struct nvme_dev *dev, __u32 fileId, cmd.cdw13 = fileId<<16; cmd.cdw14 = spiDestn; - ret = nvme_submit_admin_passthru(dev->fd, &cmd, NULL); + ret = nvme_submit_admin_passthru(dev_fd(dev), &cmd, NULL); if (!ret && logSize) *logSize = cmd.result; @@ -8427,7 +8452,7 @@ static int wdc_de_VU_read_buffer(struct nvme_dev *dev, __u32 fileId, cmd.addr = (__u64)(__u64)(uintptr_t)dataBuffer; cmd.data_len = *bufferSize; - ret = nvme_submit_admin_passthru(dev->fd, &cmd, NULL); + ret = nvme_submit_admin_passthru(dev_fd(dev), &cmd, NULL); if( ret != WDC_STATUS_SUCCESS) { fprintf(stderr, "ERROR : WDC : VUReadBuffer() failed, "); @@ -8837,7 +8862,7 @@ static int wdc_do_drive_essentials(nvme_root_t r, struct nvme_dev *dev, /* Get Identify Controller Data */ memset(&ctrl, 0, sizeof (struct nvme_id_ctrl)); - ret = nvme_identify_ctrl(dev->fd, &ctrl); + ret = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (ret) { fprintf(stderr, "ERROR : WDC : nvme_identify_ctrl() failed, ret = %d\n", ret); return -1; @@ -8848,7 +8873,7 @@ static int wdc_do_drive_essentials(nvme_root_t r, struct nvme_dev *dev, } memset(&ns, 0, sizeof (struct nvme_id_ns)); - ret = nvme_identify_ns(dev->fd, 1, &ns); + ret = nvme_identify_ns(dev_fd(dev), 1, &ns); if (ret) { fprintf(stderr, "ERROR : WDC : nvme_identify_ns() failed, ret = %d\n", ret); } else { @@ -8863,7 +8888,8 @@ static int wdc_do_drive_essentials(nvme_root_t r, struct nvme_dev *dev, dataBuffer = calloc(1, elogBufferSize); elogBuffer = (struct nvme_error_log_page *)dataBuffer; - ret = nvme_get_log_error(dev->fd, elogNumEntries, false, elogBuffer); + ret = nvme_get_log_error(dev_fd(dev), elogNumEntries, false, + elogBuffer); if (ret) { fprintf(stderr, "ERROR : WDC : nvme_error_log() failed, ret = %d\n", ret); } else { @@ -8877,7 +8903,8 @@ static int wdc_do_drive_essentials(nvme_root_t r, struct nvme_dev *dev, /* Get Smart log page */ memset(&smart_log, 0, sizeof (struct nvme_smart_log)); - ret = nvme_get_log_smart(dev->fd, NVME_NSID_ALL, false, &smart_log); + ret = nvme_get_log_smart(dev_fd(dev), NVME_NSID_ALL, false, + &smart_log); if (ret) { fprintf(stderr, "ERROR : WDC : nvme_smart_log() failed, ret = %d\n", ret); } else { @@ -8888,7 +8915,7 @@ static int wdc_do_drive_essentials(nvme_root_t r, struct nvme_dev *dev, /* Get FW Slot log page */ memset(&fw_log, 0, sizeof (struct nvme_firmware_slot)); - ret = nvme_get_log_fw_slot(dev->fd, false, &fw_log); + ret = nvme_get_log_fw_slot(dev_fd(dev), false, &fw_log); if (ret) { fprintf(stderr, "ERROR : WDC : nvme_fw_log() failed, ret = %d\n", ret); } else { @@ -8908,8 +8935,9 @@ static int wdc_do_drive_essentials(nvme_root_t r, struct nvme_dev *dev, dataBuffer = calloc(1, dataBufferSize); memset(dataBuffer, 0, dataBufferSize); - ret = nvme_get_log_simple(dev->fd, deVULogPagesList[vuLogIdx].logPageId, - dataBufferSize, dataBuffer); + ret = nvme_get_log_simple(dev_fd(dev), + deVULogPagesList[vuLogIdx].logPageId, + dataBufferSize, dataBuffer); if (ret) { fprintf(stderr, "ERROR : WDC : nvme_get_log() for log page 0x%x failed, ret = %d\n", deVULogPagesList[vuLogIdx].logPageId, ret); @@ -8933,7 +8961,7 @@ static int wdc_do_drive_essentials(nvme_root_t r, struct nvme_dev *dev, /* skipping LbaRangeType as it is an optional nvme command and not supported */ if (deFeatureIdList[listIdx].featureId == FID_LBA_RANGE_TYPE) continue; - ret = nvme_get_features_data(dev->fd, + ret = nvme_get_features_data(dev_fd(dev), deFeatureIdList[listIdx].featureId, WDC_DE_GLOBAL_NSID, sizeof(featureIdBuff), @@ -9099,7 +9127,7 @@ static int wdc_do_drive_resize(struct nvme_dev *dev, uint64_t new_size) WDC_NVME_DRIVE_RESIZE_CMD); admin_cmd.cdw13 = new_size; - ret = nvme_submit_admin_passthru(dev->fd, &admin_cmd, NULL); + ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL); return ret; } @@ -9113,7 +9141,7 @@ static int wdc_do_namespace_resize(struct nvme_dev *dev, __u32 nsid, __u32 op_op admin_cmd.nsid = nsid; admin_cmd.cdw10 = op_option; - ret = nvme_submit_admin_passthru(dev->fd, &admin_cmd, NULL); + ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL); return ret; } @@ -9127,7 +9155,7 @@ static int wdc_do_drive_info(struct nvme_dev *dev, __u32 *result) admin_cmd.cdw12 = ((WDC_NVME_DRIVE_INFO_SUBCMD << WDC_NVME_SUBCMD_SHIFT) | WDC_NVME_DRIVE_INFO_CMD); - ret = nvme_submit_admin_passthru(dev->fd, &admin_cmd, NULL); + ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL); if (!ret && result) *result = admin_cmd.result; @@ -9491,7 +9519,7 @@ static int wdc_get_drive_reason_id(struct nvme_dev *dev, char *drive_reason_id, j = sizeof (ctrl.mn) - 1; memset(drive_reason_id, 0, len); memset(&ctrl, 0, sizeof (struct nvme_id_ctrl)); - ret = nvme_identify_ctrl(dev->fd, &ctrl); + ret = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (ret) { fprintf(stderr, "ERROR : WDC : nvme_identify_ctrl() failed " "0x%x\n", ret); @@ -9591,9 +9619,9 @@ static int wdc_dump_telemetry_hdr(struct nvme_dev *dev, int log_id, struct nvme_ int ret = 0; if (log_id == NVME_LOG_LID_TELEMETRY_HOST) - ret = nvme_get_log_create_telemetry_host(dev->fd, log_hdr); + ret = nvme_get_log_create_telemetry_host(dev_fd(dev), log_hdr); else - ret = nvme_get_log_telemetry_ctrl(dev->fd, false, 0, 512, + ret = nvme_get_log_telemetry_ctrl(dev_fd(dev), false, 0, 512, (void *)log_hdr); if (ret < 0) @@ -9993,7 +10021,8 @@ static int wdc_do_vs_nand_stats_sn810_2(struct nvme_dev *dev, char *format) uint8_t *data = NULL; data = NULL; - ret = nvme_get_ext_smart_cloud_log(dev->fd, &data, 0, NVME_NSID_ALL); + ret = nvme_get_ext_smart_cloud_log(dev_fd(dev), &data, 0, + NVME_NSID_ALL); if (ret) { fprintf(stderr, "ERROR : WDC : %s : Failed to retreive NAND stats\n", __func__); @@ -10036,8 +10065,8 @@ static int wdc_do_vs_nand_stats(struct nvme_dev *dev, char *format) goto out; } - ret = nvme_get_log_simple(dev->fd, WDC_NVME_NAND_STATS_LOG_ID, - WDC_NVME_NAND_STATS_SIZE, (void*)output); + ret = nvme_get_log_simple(dev_fd(dev), WDC_NVME_NAND_STATS_LOG_ID, + WDC_NVME_NAND_STATS_SIZE, (void*)output); if (ret) { fprintf(stderr, "ERROR : WDC : %s : Failed to retreive NAND stats\n", __func__); goto out; @@ -10139,7 +10168,7 @@ static int wdc_do_vs_pcie_stats(struct nvme_dev *dev, admin_cmd.addr = (__u64)(uintptr_t)pcieStatsPtr; admin_cmd.data_len = pcie_stats_size; - ret = nvme_submit_admin_passthru(dev->fd, &admin_cmd, NULL); + ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL); return ret; } @@ -10271,7 +10300,7 @@ static int wdc_vs_drive_info(int argc, char **argv, } /* get the id ctrl data used to fill in drive info below */ - ret = nvme_identify_ctrl(dev->fd, &ctrl); + ret = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (ret) { fprintf(stderr, "ERROR : WDC %s: Identify Controller failed\n", __func__); @@ -10359,7 +10388,7 @@ static int wdc_vs_drive_info(int argc, char **argv, break; case WDC_NVME_SN820CL_DEV_ID: /* Get the Drive HW Rev from the C6 Log page */ - ret = nvme_get_hw_rev_log(dev->fd, &data, 0, + ret = nvme_get_hw_rev_log(dev_fd(dev), &data, 0, NVME_NSID_ALL); if (ret == 0) { wdc_nvme_hw_rev_log *log_data = (wdc_nvme_hw_rev_log *)data; @@ -10380,7 +10409,8 @@ static int wdc_vs_drive_info(int argc, char **argv, goto out; } - ret = nvme_get_ext_smart_cloud_log(dev->fd, &data, 0, NVME_NSID_ALL); + ret = nvme_get_ext_smart_cloud_log(dev_fd(dev), &data, + 0, NVME_NSID_ALL); if (ret == 0) { ext_smart_log_ptr = (wdc_nvme_ext_smart_log *)data; @@ -10489,10 +10519,11 @@ static int wdc_vs_temperature_stats(int argc, char **argv, } /* get the temperature stats or report errors */ - ret = nvme_identify_ctrl(dev->fd, &id_ctrl); + ret = nvme_identify_ctrl(dev_fd(dev), &id_ctrl); if (ret != 0) goto out; - ret = nvme_get_log_smart(dev->fd, NVME_NSID_ALL, false, &smart_log); + ret = nvme_get_log_smart(dev_fd(dev), NVME_NSID_ALL, false, + &smart_log); if (ret != 0) goto out; @@ -10500,7 +10531,7 @@ static int wdc_vs_temperature_stats(int argc, char **argv, temperature = ((smart_log.temperature[1] << 8) | smart_log.temperature[0]) - 273; /* retrieve HCTM Thermal Management Temperatures */ - nvme_get_features_simple(dev->fd, 0x10, 0, &hctm_tmt); + nvme_get_features_simple(dev_fd(dev), 0x10, 0, &hctm_tmt); temp_tmt1 = ((hctm_tmt >> 16) & 0xffff) ? ((hctm_tmt >> 16) & 0xffff) - 273 : 0; temp_tmt2 = (hctm_tmt & 0xffff) ? (hctm_tmt & 0xffff) - 273 : 0; @@ -10735,7 +10766,7 @@ static int wdc_cloud_boot_SSD_version(int argc, char **argv, if ((capabilities & WDC_DRIVE_CAP_CLOUD_BOOT_SSD_VERSION) == WDC_DRIVE_CAP_CLOUD_BOOT_SSD_VERSION) { /* Get the 0xC0 Smart Cloud Attribute V1 log data */ - ret = nvme_get_ext_smart_cloud_log(dev->fd, &data, 0, + ret = nvme_get_ext_smart_cloud_log(dev_fd(dev), &data, 0, cfg.namespace_id); ext_smart_log_ptr = (wdc_nvme_ext_smart_log *)data; @@ -10911,7 +10942,7 @@ static int wdc_enc_submit_move_data(struct nvme_dev *dev, char *cmd, int len, d); #endif nvme_cmd.result = 0; - err = nvme_submit_admin_passthru(dev->fd, &nvme_cmd, NULL); + err = nvme_submit_admin_passthru(dev_fd(dev), &nvme_cmd, NULL); if (err == NVME_SC_INTERNAL) { fprintf(stderr, "%s: WARNING : WDC : No log ID:x%x available\n", __func__, log_id); @@ -10939,7 +10970,8 @@ static int wdc_enc_submit_move_data(struct nvme_dev *dev, char *cmd, int len, nvme_cmd.cdw14 = cdw14; nvme_cmd.cdw15 = cdw15; nvme_cmd.result = 0; /* returned result !=0 indicates more data available */ - err = nvme_submit_admin_passthru(dev->fd, &nvme_cmd, NULL); + err = nvme_submit_admin_passthru(dev_fd(dev), + &nvme_cmd, NULL); if (err != 0) { more = 0; fprintf(stderr, "%s: ERROR : WDC : NVMe Rcv Mgmt ", __func__); @@ -10996,7 +11028,8 @@ static int wdc_enc_get_nic_log(struct nvme_dev *dev, __u8 log_id, __u32 xfer_siz #ifdef WDC_NVME_CLI_DEBUG fprintf(stderr, "nsid 0x%08x addr 0x%08llx, data_len 0x%08x, cdw10 0x%08x, cdw11 0x%08x, cdw12 0x%08x, cdw13 0x%08x, cdw14 0x%08x \n", admin_cmd.nsid, admin_cmd.addr, admin_cmd.data_len, admin_cmd.cdw10, admin_cmd.cdw11, admin_cmd.cdw12, admin_cmd.cdw13, admin_cmd.cdw14); #endif - ret = nvme_submit_admin_passthru(dev->fd, &admin_cmd, NULL); + ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, + NULL); if (ret != 0) { nvme_show_status(ret); fprintf(stderr, "%s: ERROR : WDC : Get chunk %d, size = 0x%x, offset = 0x%x, addr = 0x%lx\n", diff --git a/plugins/ymtc/ymtc-nvme.c b/plugins/ymtc/ymtc-nvme.c index aebf7451..3b8d79e7 100644 --- a/plugins/ymtc/ymtc-nvme.c +++ b/plugins/ymtc/ymtc-nvme.c @@ -40,7 +40,7 @@ static int show_ymtc_smart_log(struct nvme_dev *dev, __u32 nsid, free(nm); return -1; } - err = nvme_identify_ctrl(dev->fd, &ctrl); + err = nvme_identify_ctrl(dev_fd(dev), &ctrl); if (err) { free(nm); free(raw); @@ -145,7 +145,7 @@ static int get_additional_smart_log(int argc, char **argv, struct command *cmd, if (err < 0) return err; - err = nvme_get_nsid_log(dev->fd, false, 0xca, cfg.namespace_id, + err = nvme_get_nsid_log(dev_fd(dev), false, 0xca, cfg.namespace_id, sizeof(smart_log), &smart_log); if (!err) { if (!cfg.raw_binary) diff --git a/plugins/zns/zns.c b/plugins/zns/zns.c index c5f528e4..46b0a350 100644 --- a/plugins/zns/zns.c +++ b/plugins/zns/zns.c @@ -144,7 +144,7 @@ static int id_ctrl(int argc, char **argv, struct command *cmd, struct plugin *pl if (flags < 0) goto close_fd; - err = nvme_zns_identify_ctrl(dev->fd, &ctrl); + err = nvme_zns_identify_ctrl(dev_fd(dev), &ctrl); if (!err) nvme_show_zns_id_ctrl(&ctrl, flags); else if (err > 0) @@ -202,20 +202,20 @@ static int id_ns(int argc, char **argv, struct command *cmd, struct plugin *plug flags |= VERBOSE; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { perror("get-namespace-id"); goto close_fd; } } - err = nvme_identify_ns(dev->fd, cfg.namespace_id, &id_ns); + err = nvme_identify_ns(dev_fd(dev), cfg.namespace_id, &id_ns); if (err) { nvme_show_status(err); goto close_fd; } - err = nvme_zns_identify_ns(dev->fd, cfg.namespace_id, &ns); + err = nvme_zns_identify_ns(dev_fd(dev), cfg.namespace_id, &ns); if (!err) nvme_show_zns_id_ns(&ns, &id_ns, flags); else if (err > 0) @@ -264,7 +264,7 @@ static int zns_mgmt_send(int argc, char **argv, struct command *cmd, struct plug goto close_dev; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { perror("get-namespace-id"); goto free; @@ -273,7 +273,7 @@ static int zns_mgmt_send(int argc, char **argv, struct command *cmd, struct plug struct nvme_zns_mgmt_send_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .slba = cfg.zslba, .zsa = zsa, @@ -380,7 +380,7 @@ static int zone_mgmt_send(int argc, char **argv, struct command *cmd, struct plu return errno; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { perror("get-namespace-id"); goto close_dev; @@ -395,7 +395,8 @@ static int zone_mgmt_send(int argc, char **argv, struct command *cmd, struct plu if (cfg.zsa == NVME_ZNS_ZSA_SET_DESC_EXT) { if(!cfg.data_len) { - int data_len = get_zdes_bytes(dev->fd, cfg.namespace_id); + int data_len = get_zdes_bytes(dev_fd(dev), + cfg.namespace_id); if (data_len == 0) { fprintf(stderr, @@ -437,7 +438,7 @@ static int zone_mgmt_send(int argc, char **argv, struct command *cmd, struct plu struct nvme_zns_mgmt_send_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .slba = cfg.zslba, .zsa = cfg.zsa, @@ -518,7 +519,7 @@ static int open_zone(int argc, char **argv, struct command *cmd, struct plugin * return errno; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { perror("get-namespace-id"); goto close_dev; @@ -527,7 +528,7 @@ static int open_zone(int argc, char **argv, struct command *cmd, struct plugin * struct nvme_zns_mgmt_send_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .slba = cfg.zslba, .zsa = NVME_ZNS_ZSA_OPEN, @@ -600,14 +601,14 @@ static int set_zone_desc(int argc, char **argv, struct command *cmd, struct plug return errno; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { perror("get-namespace-id"); goto close_dev; } } - data_len = get_zdes_bytes(dev->fd, cfg.namespace_id); + data_len = get_zdes_bytes(dev_fd(dev), cfg.namespace_id); if (!data_len || data_len < 0) { fprintf(stderr, @@ -641,7 +642,7 @@ static int set_zone_desc(int argc, char **argv, struct command *cmd, struct plug struct nvme_zns_mgmt_send_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .slba = cfg.zslba, .zsa = NVME_ZNS_ZSA_SET_DESC_EXT, @@ -699,7 +700,7 @@ static int zrwa_flush_zone(int argc, char **argv, struct command *cmd, struct pl return errno; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { perror("get-namespace-id"); goto close_dev; @@ -708,7 +709,7 @@ static int zrwa_flush_zone(int argc, char **argv, struct command *cmd, struct pl struct nvme_zns_mgmt_send_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .slba = cfg.lba, .zsa = NVME_ZNS_ZSA_ZRWA_FLUSH, @@ -778,7 +779,7 @@ static int zone_mgmt_recv(int argc, char **argv, struct command *cmd, struct plu goto close_dev; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { perror("get-namespace-id"); goto close_dev; @@ -801,7 +802,7 @@ static int zone_mgmt_recv(int argc, char **argv, struct command *cmd, struct plu struct nvme_zns_mgmt_recv_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .slba = cfg.zslba, .zra = cfg.zra, @@ -896,7 +897,7 @@ static int report_zones(int argc, char **argv, struct command *cmd, struct plugi flags |= VERBOSE; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { perror("get-namespace-id"); goto close_dev; @@ -904,20 +905,20 @@ static int report_zones(int argc, char **argv, struct command *cmd, struct plugi } if (cfg.extended) { - zdes = get_zdes_bytes(dev->fd, cfg.namespace_id); + zdes = get_zdes_bytes(dev_fd(dev), cfg.namespace_id); if (zdes < 0) { err = zdes; goto close_dev; } } - err = nvme_identify_ns(dev->fd, cfg.namespace_id, &id_ns); + err = nvme_identify_ns(dev_fd(dev), cfg.namespace_id, &id_ns); if (err) { nvme_show_status(err); goto close_dev; } - err = nvme_zns_identify_ns(dev->fd, cfg.namespace_id, &id_zns); + err = nvme_zns_identify_ns(dev_fd(dev), cfg.namespace_id, &id_zns); if (!err) { /* get zsze field from zns id ns data - needed for offset calculation */ nvme_id_ns_flbas_to_lbaf_inuse(id_ns.flbas, &lbaf); @@ -935,7 +936,7 @@ static int report_zones(int argc, char **argv, struct command *cmd, struct plugi goto close_dev; } - err = nvme_zns_report_zones(dev->fd, cfg.namespace_id, 0, + err = nvme_zns_report_zones(dev_fd(dev), cfg.namespace_id, 0, cfg.state, false, false, log_len, buff, NVME_DEFAULT_IOCTL_TIMEOUT, NULL); @@ -983,7 +984,8 @@ static int report_zones(int argc, char **argv, struct command *cmd, struct plugi log_len = sizeof(struct nvme_zone_report) + ((sizeof(struct nvme_zns_desc) * nr_zones_chunks) + (nr_zones_chunks * zdes)); } - err = nvme_zns_report_zones(dev->fd, cfg.namespace_id, offset, + err = nvme_zns_report_zones(dev_fd(dev), cfg.namespace_id, + offset, cfg.state, cfg.extended, cfg.partial, log_len, report, NVME_DEFAULT_IOCTL_TIMEOUT, NULL); @@ -1090,14 +1092,14 @@ static int zone_append(int argc, char **argv, struct command *cmd, struct plugin } if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { perror("get-namespace-id"); goto close_dev; } } - err = nvme_identify_ns(dev->fd, cfg.namespace_id, &ns); + err = nvme_identify_ns(dev_fd(dev), cfg.namespace_id, &ns); if (err) { nvme_show_status(err); goto close_dev; @@ -1186,7 +1188,7 @@ static int zone_append(int argc, char **argv, struct command *cmd, struct plugin struct nvme_zns_append_args args = { .args_size = sizeof(args), - .fd = dev->fd, + .fd = dev_fd(dev), .nsid = cfg.namespace_id, .zslba = cfg.zslba, .nlb = nblocks, @@ -1267,14 +1269,14 @@ static int changed_zone_list(int argc, char **argv, struct command *cmd, struct goto close_fd; if (!cfg.namespace_id) { - err = nvme_get_nsid(dev->fd, &cfg.namespace_id); + err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id); if (err < 0) { perror("get-namespace-id"); goto close_fd; } } - err = nvme_get_log_zns_changed_zones(dev->fd, cfg.namespace_id, + err = nvme_get_log_zns_changed_zones(dev_fd(dev), cfg.namespace_id, cfg.rae, &log); if (!err) nvme_show_zns_changed(&log, flags);