]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
tree: Add dev_fd() helper
authorJeremy Kerr <jk@codeconstruct.com.au>
Wed, 13 Jul 2022 03:07:51 +0000 (11:07 +0800)
committerDaniel Wagner <dwagner@suse.de>
Fri, 12 Aug 2022 06:52:14 +0000 (08:52 +0200)
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 <jk@codeconstruct.com.au>
21 files changed:
nvme-rpmb.c
nvme.c
nvme.h
plugins/dera/dera-nvme.c
plugins/innogrit/innogrit-nvme.c
plugins/intel/intel-nvme.c
plugins/memblaze/memblaze-nvme.c
plugins/micron/micron-nvme.c
plugins/ocp/ocp-nvme.c
plugins/scaleflux/sfx-nvme.c
plugins/seagate/seagate-nvme.c
plugins/shannon/shannon-nvme.c
plugins/solidigm/solidigm-garbage-collection.c
plugins/solidigm/solidigm-latency-tracking.c
plugins/solidigm/solidigm-smart.c
plugins/toshiba/toshiba-nvme.c
plugins/transcend/transcend-nvme.c
plugins/virtium/virtium-nvme.c
plugins/wdc/wdc-nvme.c
plugins/ymtc/ymtc-nvme.c
plugins/zns/zns.c

index b460510f9ab0b3a4005921f3e51c260c59a8acaa..c2845fb0cd5b119e17816bb85a2dc8e33fa8be2f 100644 (file)
@@ -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 5d903bfd6b188ef75a9453b2f3ad3ef4f545ee36..50099a92ed3a7b08c4492d392fc1bbad8e484e9d 100644 (file)
--- 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 25b9c2a76e0660754033d63bda38bc44ce7cd9e3..549cd9cd2472c447c94cb0bf9d3d8f50fc601dcb 100644 (file)
--- 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);
 
 /*
index a4ec0a0712753b3530664816ffb0f4208f5902da..44fac158923ed53d3c7b4b757abdf5895fbf68fa 100644 (file)
@@ -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);
index 3769a260b896f120ac2ddc1d84418f8827cc6159..651ce910f7c2c2a90ab9a5ecf7534aa1b7570e9e 100644 (file)
@@ -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)
index 3425a22c9be97fd1004d15f3a9c8502f979fd226..e0cf4abd6a287f59ed0bc7278ea629ad5265e24d 100644 (file)
@@ -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,
index 921ecb9beafc834abd34e33c3c68b53dd9b96a23..f97d0a9b818442608522cf7bb0fb759c8286c5d9 100644 (file)
@@ -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,
index db76ef7b747d96abf9fdf399342bc51831fd95cd..df53044fa59a3c9e693475f8fbbd48f64d1d3a73 100644 (file)
@@ -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);
index ac8239c31a68b7e8821037cdf43968e4d5c4f0c9..b91fe9e4fc3edcd6b5f4d6dec2c13f2a6e13f1a5 100644 (file)
@@ -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,
index 44f4feafed6bf873de36f4ce75ef457fbe2f327b..0c41df5c93a62e45c317de6aff729fa514092aac 100644 (file)
@@ -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);
index 179a7e6ec2e1f000796a8fde7ca8b2e8126212bd..418f18a61dbb562f517593719af8f47daafd5deb 100644 (file)
@@ -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,
index c1c5b5a9c9d3d93afb3379ae803c05b423569fdc..b433d23f15b0c432000f40179c85b34d07d0a4ec 100644 (file)
@@ -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,
index 9e40c88eaccf31c08239649d091c685e8587f161..f2223905902d5b551000b88bd4995b2de846a349 100644 (file)
@@ -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)     {
index 17b1c95eaaaed27b77b5e10aaa3a83f1cef8cf9c..849941393dff59c380fff9467f0e7cb4ec7f1e22 100644 (file)
@@ -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) {
index 5e01066e49c91861dbd2f9d32847baaab187a57a..3cee7d2244cb704d1c0fb384da52970a285a5b39 100644 (file)
@@ -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) {
index b67bf942e11c990b1068a1fdf5e47be8e9a9fb15..58f1c1c62b1c34b565c2ccf71f94d370e11247b2 100644 (file)
@@ -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,
index c75e7eea9712584511bd1620771501f707cb2c95..5a4320c312c91065b263db9d72b733dd271f9285 100644 (file)
@@ -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);
index d9742ea746aaf3f9da027abd955740e2ad209d29..00ca9066f6c3da434710d298307fef84537b2690 100644 (file)
@@ -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);
index f1893051a37f3b8e8ca81d7bce6892e5c1470bd2..d0c832f642a18f23741d71736713765b15597f94 100644 (file)
@@ -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",
index aebf74515310053e4a362798e593ecfd174d1373..3b8d79e760ea93d7eeb0e0e277c68139c91a1906 100644 (file)
@@ -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)
index c5f528e44383971b98e437574b3962db2215ed63..46b0a3509e6120dfd81a3c6daa83e80400066d81 100644 (file)
@@ -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);