From 28999c46204744af872d4bfdd58b9986a043689c Mon Sep 17 00:00:00 2001 From: Keith Busch Date: Fri, 8 Nov 2019 09:59:06 +0900 Subject: [PATCH] Use simpler nvme ioctl api for admin Signed-off-by: Keith Busch --- linux/nvme.h | 8 ++-- nvme-ioctl.c | 55 ++++++++++++------------ nvme-ioctl.h | 22 +++++----- plugins/intel/intel-nvme.c | 81 ++++++++++++++++++++---------------- plugins/micron/micron-nvme.c | 2 +- plugins/netapp/netapp-nvme.c | 2 +- plugins/wdc/wdc-nvme.c | 36 ++++++++-------- 7 files changed, 107 insertions(+), 99 deletions(-) diff --git a/linux/nvme.h b/linux/nvme.h index 2b9dc77b..dda96334 100644 --- a/linux/nvme.h +++ b/linux/nvme.h @@ -246,6 +246,9 @@ struct nvme_id_power_state { __u8 rsvd23[9]; }; +/* idle and active power scales occupy the last 2 bits of the field */ +#define POWER_SCALE(s) ((s) >> 6) + enum { NVME_PS_FLAGS_MAX_POWER_SCALE = 1 << 0, NVME_PS_FLAGS_NON_OP_STATE = 1 << 1, @@ -1180,9 +1183,6 @@ struct nvme_firmware_log_page { __u8 resv2[448]; }; -/* idle and active power scales occupy the last 2 bits of the field */ -#define POWER_SCALE(s) ((s) >> 6) - struct nvme_host_mem_buffer { __u32 hsize; __u32 hmdlal; @@ -1204,7 +1204,7 @@ struct nvme_timestamp { struct nvme_controller_list { __le16 num; - __le16 identifier[]; + __le16 identifier[2047]; }; struct nvme_secondary_controller_entry { diff --git a/nvme-ioctl.c b/nvme-ioctl.c index 61e79910..cdaca74e 100644 --- a/nvme-ioctl.c +++ b/nvme-ioctl.c @@ -88,12 +88,12 @@ int nvme_submit_passthru(int fd, unsigned long ioctl_cmd, return ioctl(fd, ioctl_cmd, cmd); } -static int nvme_submit_admin_passthru(int fd, struct nvme_passthru_cmd *cmd) +int nvme_submit_admin_passthru(int fd, struct nvme_passthru_cmd *cmd) { return ioctl(fd, NVME_IOCTL_ADMIN_CMD, cmd); } -static int nvme_submit_io_passthru(int fd, struct nvme_passthru_cmd *cmd) +int nvme_submit_io_passthru(int fd, struct nvme_passthru_cmd *cmd) { return ioctl(fd, NVME_IOCTL_IO_CMD, cmd); } @@ -417,33 +417,38 @@ int nvme_identify_uuid(int fd, void *data) int nvme_get_log14(int fd, __u32 nsid, __u8 log_id, __u8 lsp, __u64 lpo, __u16 lsi, bool rae, __u8 uuid_ix, __u32 data_len, void *data) { + __u32 numd = (data_len >> 2) - 1; + __u16 numdu = numd >> 16, numdl = numd & 0xffff; + __u32 cdw10 = log_id | (numdl << 16) | (rae ? 1 << 15 : 0) | lsp << 8; + struct nvme_admin_cmd cmd = { .opcode = nvme_admin_get_log_page, .nsid = nsid, .addr = (__u64)(uintptr_t) data, .data_len = data_len, + .cdw10 = cdw10, + .cdw11 = numdu | (lsi << 16), + .cdw12 = lpo & 0xffffffff, + .cdw13 = lpo >> 32, + .cdw14 = uuid_ix, }; - __u32 numd = (data_len >> 2) - 1; - __u16 numdu = numd >> 16, numdl = numd & 0xffff; - - cmd.cdw10 = log_id | (numdl << 16) | (rae ? 1 << 15 : 0); - if (lsp) - cmd.cdw10 |= lsp << 8; - - cmd.cdw11 = numdu | (lsi << 16); - cmd.cdw12 = lpo; - cmd.cdw13 = (lpo >> 32); - cmd.cdw14 = uuid_ix; return nvme_submit_admin_passthru(fd, &cmd); +} +int nvme_get_log13(int fd, __u32 nsid, __u8 log_id, __u8 lsp, + __u64 lpo, __u16 lsi, bool rae, __u32 data_len, + void *data) +{ + return nvme_get_log14(fd, nsid, log_id, lsp, lpo, lsi, rae, 0, + data_len, data); } int nvme_get_log(int fd, __u32 nsid, __u8 log_id, bool rae, __u32 data_len, void *data) { - void *ptr = data; __u32 offset = 0, xfer_len = data_len; + void *ptr = data; int ret; /* @@ -518,9 +523,7 @@ int nvme_smart_log(int fd, __u32 nsid, struct nvme_smart_log *smart_log) int nvme_ana_log(int fd, void *ana_log, size_t ana_log_len, int rgo) { - __u64 lpo = 0; - - return nvme_get_log13(fd, NVME_NSID_ALL, NVME_LOG_ANA, rgo, lpo, 0, + return nvme_get_log13(fd, NVME_NSID_ALL, NVME_LOG_ANA, rgo, 0, 0, true, ana_log_len, ana_log); } @@ -597,8 +600,7 @@ int nvme_get_properties(int fd, void **pbar) { int offset; uint64_t value; - int err; - int size = getpagesize(); + int err, size = getpagesize(); *pbar = malloc(size); if (!*pbar) { @@ -706,22 +708,21 @@ int nvme_ns_delete(int fd, __u32 nsid, __u32 timeout) int nvme_ns_attachment(int fd, __u32 nsid, __u16 num_ctrls, __u16 *ctrlist, bool attach) { - int i; - __u8 buf[0x1000]; - struct nvme_controller_list *cntlist = - (struct nvme_controller_list *)buf; + struct nvme_controller_list cntlist = { + .num = cpu_to_le16(num_ctrls), + }; + struct nvme_admin_cmd cmd = { .opcode = nvme_admin_ns_attach, .nsid = nsid, - .addr = (__u64)(uintptr_t) cntlist, + .addr = (__u64)(uintptr_t)&cntlist, .cdw10 = attach ? 0 : 1, .data_len = 0x1000, }; + int i; - memset(buf, 0, sizeof(buf)); - cntlist->num = cpu_to_le16(num_ctrls); for (i = 0; i < num_ctrls; i++) - cntlist->identifier[i] = cpu_to_le16(ctrlist[i]); + cntlist.identifier[i] = cpu_to_le16(ctrlist[i]); return nvme_submit_admin_passthru(fd, &cmd); } diff --git a/nvme-ioctl.h b/nvme-ioctl.h index d7848182..50e5d960 100644 --- a/nvme-ioctl.h +++ b/nvme-ioctl.h @@ -13,6 +13,8 @@ int nvme_get_nsid(int fd); /* Generic passthrough */ int nvme_submit_passthru(int fd, unsigned long ioctl_cmd, struct nvme_passthru_cmd *cmd); +int nvme_submit_admin_passthru(int fd, struct nvme_passthru_cmd *cmd); +int nvme_submit_io_passthru(int fd, struct nvme_passthru_cmd *cmd); int nvme_passthru(int fd, unsigned long ioctl_cmd, __u8 opcode, __u8 flags, __u16 rsvd, __u32 nsid, __u32 cdw2, __u32 cdw3, @@ -21,6 +23,7 @@ int nvme_passthru(int fd, unsigned long ioctl_cmd, __u8 opcode, __u8 flags, __u32 data_len, void *data, __u32 metadata_len, void *metadata, __u32 timeout_ms, __u32 *result); + /* NVME_SUBMIT_IO */ int nvme_io(int fd, __u8 opcode, __u64 slba, __u16 nblocks, __u16 control, __u32 dsmgmt, __u32 reftag, __u16 apptag, @@ -38,9 +41,6 @@ int nvme_compare(int fd, __u64 slba, __u16 nblocks, __u16 control, __u32 dsmgmt, __u32 reftag, __u16 apptag, __u16 appmask, void *data, void *metadata); -int nvme_verify(int fd, __u32 nsid, __u64 slba, __u16 nblocks, - __u16 control, __u32 reftag, __u16 apptag, __u16 appmask); - /* NVME_IO_CMD */ int nvme_passthru_io(int fd, __u8 opcode, __u8 flags, __u16 rsvd, __u32 nsid, __u32 cdw2, __u32 cdw3, @@ -54,6 +54,9 @@ int nvme_write_zeros(int fd, __u32 nsid, __u64 slba, __u16 nlb, int nvme_write_uncorrectable(int fd, __u32 nsid, __u64 slba, __u16 nlb); +int nvme_verify(int fd, __u32 nsid, __u64 slba, __u16 nblocks, + __u16 control, __u32 reftag, __u16 apptag, __u16 appmask); + int nvme_flush(int fd, __u32 nsid); int nvme_dsm(int fd, __u32 nsid, __u32 cdw11, struct nvme_dsm_range *dsm, @@ -70,6 +73,7 @@ int nvme_resv_release(int fd, __u32 nsid, __u8 rtype, __u8 rrela, bool iekey, __u64 crkey); int nvme_resv_report(int fd, __u32 nsid, __u32 numd, __u32 cdw11, void *data); +/* NVME_ADMIN_CMD */ int nvme_identify13(int fd, __u32 nsid, __u32 cdw10, __u32 cdw11, void *data); int nvme_identify(int fd, __u32 nsid, __u32 cdw10, void *data); int nvme_identify_ctrl(int fd, void *data); @@ -86,15 +90,9 @@ int nvme_get_log(int fd, __u32 nsid, __u8 log_id, bool rae, int nvme_get_log14(int fd, __u32 nsid, __u8 log_id, __u8 lsp, __u64 lpo, __u16 group_id, bool rae, __u8 uuid_ix, __u32 data_len, void *data); - -static inline int nvme_get_log13(int fd, __u32 nsid, __u8 log_id, __u8 lsp, - __u64 lpo, __u16 lsi, bool rae, __u32 data_len, - void *data) -{ - return nvme_get_log14(fd, nsid, log_id, lsp, lpo, lsi, rae, 0, - data_len, data); -} - +int nvme_get_log13(int fd, __u32 nsid, __u8 log_id, __u8 lsp, + __u64 lpo, __u16 lsi, bool rae, __u32 data_len, + void *data); int nvme_get_telemetry_log(int fd, void *lp, int generate_report, int ctrl_gen, size_t log_page_size, __u64 offset); int nvme_fw_log(int fd, struct nvme_firmware_log_page *fw_log); diff --git a/plugins/intel/intel-nvme.c b/plugins/intel/intel-nvme.c index 68140009..4351aaf1 100644 --- a/plugins/intel/intel-nvme.c +++ b/plugins/intel/intel-nvme.c @@ -20,7 +20,6 @@ #define CREATE_CMD #include "intel-nvme.h" -#pragma pack(push,1) struct nvme_additional_smart_log_item { __u8 key; __u8 _kp[2]; @@ -32,15 +31,14 @@ struct nvme_additional_smart_log_item { __le16 min; __le16 max; __le16 avg; - } wear_level ; + } wear_level; struct thermal_throttle { __u8 pct; __u32 count; } thermal_throttle; }; __u8 _rp; -}; -#pragma pack(pop) +} __attribute__((packed)); struct nvme_additional_smart_log { struct nvme_additional_smart_log_item program_fail_cnt; @@ -58,7 +56,7 @@ struct nvme_additional_smart_log { struct nvme_additional_smart_log_item host_bytes_written; }; -struct nvme_vu_id_ctrl_field { //CDR MR5 +struct nvme_vu_id_ctrl_field { /* CDR MR5 */ __u8 rsvd1[3]; __u8 ss; __u8 health[20]; @@ -68,7 +66,7 @@ struct nvme_vu_id_ctrl_field { //CDR MR5 __u8 sstat; __u8 bl[8]; __u8 rsvd2[38]; - __u8 ww[8]; //little endian + __u8 ww[8]; /* little endian */ __u8 mic_bl[4]; __u8 mic_fw[4]; }; @@ -94,13 +92,14 @@ static void intel_id_ctrl(__u8 *vs, struct json_object *root) mic_fw[sizeof(mic_fw) - 1] = '\0'; snprintf(ww, 19, "%02X%02X%02X%02X%02X%02X%02X%02X", log->ww[7], - log->ww[6], log->ww[5], log->ww[4], log->ww[3], log->ww[2], - log->ww[1], log->ww[0]); + log->ww[6], log->ww[5], log->ww[4], log->ww[3], log->ww[2], + log->ww[1], log->ww[0]); if (root) { json_object_add_value_int(root, "ss", log->ss); - json_object_add_value_string(root, "health", health[0] ? health : "healthy"); + json_object_add_value_string(root, "health", + health[0] ? health : "healthy"); json_object_add_value_int(root, "cls", log->cls); json_object_add_value_int(root, "nlw", log->nlw); json_object_add_value_int(root, "scap", log->scap); @@ -268,13 +267,15 @@ static void show_intel_smart_log(struct nvme_additional_smart_log *smart, static int get_additional_smart_log(int argc, char **argv, struct command *cmd, struct plugin *plugin) { - struct nvme_additional_smart_log smart_log; - int err, fd; const char *desc = "Get Intel vendor specific additional smart log (optionally, "\ "for the specified namespace), and show it."; const char *namespace = "(optional) desired namespace"; const char *raw = "Dump output in binary format"; const char *json= "Dump output in json format"; + + struct nvme_additional_smart_log smart_log; + int err, fd; + struct config { __u32 namespace_id; int raw_binary; @@ -314,11 +315,12 @@ static int get_additional_smart_log(int argc, char **argv, struct command *cmd, static int get_market_log(int argc, char **argv, struct command *cmd, struct plugin *plugin) { + const char *desc = "Get Intel Marketing Name log and show it."; + const char *raw = "dump output in binary format"; + char log[512]; int err, fd; - const char *desc = "Get Intel Marketing Name log and show it."; - const char *raw = "dump output in binary format"; struct config { int raw_binary; }; @@ -480,11 +482,11 @@ static int get_lat_stats_log(int argc, char **argv, struct command *cmd, struct } struct intel_assert_dump { - __u32 coreoffset; - __u32 assertsize; - __u8 assertdumptype; - __u8 assertvalid; - __u8 reserved[2]; + __u32 coreoffset; + __u32 assertsize; + __u8 assertdumptype; + __u8 assertvalid; + __u8 reserved[2]; }; struct intel_event_dump { @@ -534,17 +536,17 @@ struct intel_vu_nlog { }; struct intel_cd_log { - union { - struct { - __u32 selectLog : 3; - __u32 selectCore : 2; - __u32 selectNlog : 8; - __u8 selectOffsetRef : 1; - __u32 selectNlogPause : 2; - __u32 reserved2 : 16; - }fields; - __u32 entireDword; - }u; + union { + struct { + __u32 selectLog : 3; + __u32 selectCore : 2; + __u32 selectNlog : 8; + __u8 selectOffsetRef : 1; + __u32 selectNlogPause : 2; + __u32 reserved2 : 16; + } fields; + __u32 entireDword; + } u; }; static void print_intel_nlog(struct intel_vu_nlog *intel_nlog) @@ -585,9 +587,12 @@ static int read_entire_cmd(struct nvme_passthru_cmd *cmd, int total_size, dword_tfer = min(max_tfer, total_size); while (total_size > 0) { - err = nvme_submit_passthru(ioctl_fd, NVME_IOCTL_ADMIN_CMD, cmd); + err = nvme_submit_admin_passthru(ioctl_fd, cmd); if (err) { - fprintf(stderr, "failed on cmd.data_len %u cmd.cdw13 %u cmd.cdw12 %x cmd.cdw10 %u err %x remaining size %d\n", cmd->data_len, cmd->cdw13, cmd->cdw12, cmd->cdw10, err, total_size); + fprintf(stderr, + "failed on cmd.data_len %u cmd.cdw13 %u cmd.cdw12 %x cmd.cdw10 %u err %x remaining size %d\n", + cmd->data_len, cmd->cdw13, cmd->cdw12, + cmd->cdw10, err, total_size); goto out; } @@ -616,7 +621,8 @@ static int write_header(__u8 *buf, int fd, size_t amnt) return 0; } -static int read_header(struct nvme_passthru_cmd *cmd,__u8 *buf, int ioctl_fd, __u32 dw12, int nsid) +static int read_header(struct nvme_passthru_cmd *cmd,__u8 *buf, int ioctl_fd, + __u32 dw12, int nsid) { memset(cmd, 0, sizeof(*cmd)); memset(buf, 0, 4096); @@ -681,7 +687,8 @@ static int get_internal_log_old(__u8 *buf, int output, int fd, return err; } -static int get_internal_log(int argc, char **argv, struct command *command, struct plugin *plugin) +static int get_internal_log(int argc, char **argv, struct command *command, + struct plugin *plugin) { __u8 buf[0x2000]; char f[0x100]; @@ -769,8 +776,8 @@ static int get_internal_log(int argc, char **argv, struct command *command, stru if (cfg.log == 2) { if (cfg.verbose) printf("Log major:%d minor:%d header:%d size:%d numcores:%d\n", - intel->ver.major, intel->ver.minor, intel->header, intel->size, - intel->numcores); + intel->ver.major, intel->ver.minor, + intel->header, intel->size, intel->numcores); err = write_header(buf, output, 0x1000); if (err) { @@ -794,7 +801,9 @@ static int get_internal_log(int argc, char **argv, struct command *command, stru goto out; } - for (j = (cfg.core < 0 ? 0 : cfg.core); j < (cfg.core < 0 ? core_num : cfg.core + 1); j++) { + for (j = (cfg.core < 0 ? 0 : cfg.core); + j < (cfg.core < 0 ? core_num : cfg.core + 1); + j++) { cdlog.u.fields.selectCore = j; for (i = 0; i < count; i++) { if (cfg.log == 2) { diff --git a/plugins/micron/micron-nvme.c b/plugins/micron/micron-nvme.c index 33c23c90..f43d12af 100644 --- a/plugins/micron/micron-nvme.c +++ b/plugins/micron/micron-nvme.c @@ -22,8 +22,8 @@ static int micron_fw_commit(int fd, int select) .cdw10 = 8, .cdw12 = select, }; - return nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &cmd); + return nvme_submit_admin_passthru(fd, &cmd); } static int micron_selective_download(int argc, char **argv, struct command *cmd, struct plugin *plugin) diff --git a/plugins/netapp/netapp-nvme.c b/plugins/netapp/netapp-nvme.c index d1838b4a..915833ab 100644 --- a/plugins/netapp/netapp-nvme.c +++ b/plugins/netapp/netapp-nvme.c @@ -379,7 +379,7 @@ static int nvme_get_ontap_c2_log(int fd, __u32 nsid, void *buf, __u32 buflen) get_log.cdw10 |= ONTAP_C2_LOG_NSINFO_LSP << 8; get_log.cdw11 = numdu; - err = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &get_log); + err = nvme_submit_admin_passthru(fd, &get_log); if (err) { fprintf(stderr, "ioctl error %0x\n", err); return 1; diff --git a/plugins/wdc/wdc-nvme.c b/plugins/wdc/wdc-nvme.c index c0d6c745..ebb3c6fe 100644 --- a/plugins/wdc/wdc-nvme.c +++ b/plugins/wdc/wdc-nvme.c @@ -1057,7 +1057,7 @@ static int wdc_do_clear_dump(int fd, __u8 opcode, __u32 cdw12) memset(&admin_cmd, 0, sizeof (struct nvme_admin_cmd)); admin_cmd.opcode = opcode; admin_cmd.cdw12 = cdw12; - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &admin_cmd); + ret = nvme_submit_admin_passthru(fd, &admin_cmd); if (ret != 0) { fprintf(stdout, "ERROR : WDC : Crash dump erase failed\n"); } @@ -1080,7 +1080,7 @@ static __u32 wdc_dump_length(int fd, __u32 opcode, __u32 cdw10, __u32 cdw12, __u admin_cmd.cdw10 = cdw10; admin_cmd.cdw12 = cdw12; - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &admin_cmd); + ret = nvme_submit_admin_passthru(fd, &admin_cmd); if (ret != 0) { l->log_size = 0; ret = -1; @@ -1108,7 +1108,7 @@ static __u32 wdc_dump_length_e6(int fd, __u32 opcode, __u32 cdw10, __u32 cdw12, admin_cmd.cdw10 = cdw10; admin_cmd.cdw12 = cdw12; - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &admin_cmd); + ret = nvme_submit_admin_passthru(fd, &admin_cmd); if (ret != 0) { fprintf(stderr, "ERROR : WDC : reading dump length failed\n"); fprintf(stderr, "NVMe Status:%s(%x)\n", nvme_status_to_string(ret), ret); @@ -1135,7 +1135,7 @@ static __u32 wdc_dump_dui_data(int fd, __u32 dataLen, __u32 offset, __u8 *dump_d admin_cmd.cdw14 = WDC_NVME_CAP_DUI_DISABLE_IO; - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &admin_cmd); + ret = nvme_submit_admin_passthru(fd, &admin_cmd); if (ret != 0) { fprintf(stderr, "ERROR : WDC : reading DUI data failed\n"); fprintf(stderr, "NVMe Status:%s(%x)\n", nvme_status_to_string(ret), ret); @@ -1162,7 +1162,7 @@ static __u32 wdc_dump_dui_data_v2(int fd, __u32 dataLen, __u64 offset, __u8 *dum else admin_cmd.cdw14 = WDC_NVME_CAP_DUI_DISABLE_IO; - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &admin_cmd); + ret = nvme_submit_admin_passthru(fd, &admin_cmd); if (ret != 0) { fprintf(stderr, "ERROR : WDC : reading DUI data V2 failed\n"); fprintf(stderr, "NVMe Status:%s(%x)\n", nvme_status_to_string(ret), ret); @@ -1200,7 +1200,7 @@ static int wdc_do_dump(int fd, __u32 opcode,__u32 data_len, admin_cmd.cdw13 = curr_data_offset; while (curr_data_offset < data_len) { - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &admin_cmd); + ret = nvme_submit_admin_passthru(fd, &admin_cmd); if (ret != 0) { fprintf(stderr, "%s: ERROR : WDC : NVMe Status:%s(%x)\n", __func__, nvme_status_to_string(ret), ret); @@ -1265,7 +1265,7 @@ static int wdc_do_dump_e6(int fd, __u32 opcode,__u32 data_len, admin_cmd.cdw10 = xfer_size >> 2; admin_cmd.cdw13 = curr_data_offset >> 2; - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &admin_cmd); + ret = nvme_submit_admin_passthru(fd, &admin_cmd); if (ret != 0) { fprintf(stderr, "%s: ERROR : WDC : NVMe Status:%s(%x)\n", __func__, nvme_status_to_string(ret), ret); fprintf(stderr, "%s: ERROR : WDC : Get chunk %d, size = 0x%x, offset = 0x%x, addr = 0x%lx\n", @@ -1666,7 +1666,7 @@ static int wdc_do_get_sn730_log_len(int fd, uint32_t *len_buf, uint32_t subopcod admin_cmd.cdw12 = subopcode; admin_cmd.cdw10 = SN730_LOG_CHUNK_SIZE / 4; - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &admin_cmd); + ret = nvme_submit_admin_passthru(fd, &admin_cmd); if (ret == 0) *len_buf = *output; free(output); @@ -1691,7 +1691,7 @@ static int wdc_do_get_sn730_log(int fd, void * log_buf, uint32_t offset, uint32_ admin_cmd.cdw13 = offset; admin_cmd.cdw10 = SN730_LOG_CHUNK_SIZE / 4; - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &admin_cmd); + ret = nvme_submit_admin_passthru(fd, &admin_cmd); if (!ret) memcpy(log_buf, output, SN730_LOG_CHUNK_SIZE); return ret; @@ -2111,7 +2111,7 @@ static int wdc_do_drive_log(int fd, char *file) admin_cmd.cdw12 = ((WDC_NVME_DRIVE_LOG_SUBCMD << WDC_NVME_SUBCMD_SHIFT) | WDC_NVME_DRIVE_LOG_SIZE_CMD); - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &admin_cmd); + ret = nvme_submit_admin_passthru(fd, &admin_cmd); fprintf(stderr, "NVMe Status:%s(%x)\n", nvme_status_to_string(ret), ret); if (ret == 0) { @@ -2322,7 +2322,7 @@ static int wdc_purge(int argc, char **argv, if (!wdc_check_device(fd)) return -1; - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &admin_cmd); + ret = nvme_submit_admin_passthru(fd, &admin_cmd); if (ret > 0) { switch (ret) { case WDC_NVME_PURGE_CMD_SEQ_ERR: @@ -2371,7 +2371,7 @@ static int wdc_purge_monitor(int argc, char **argv, if (!wdc_check_device(fd)) return -1; - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &admin_cmd); + ret = nvme_submit_admin_passthru(fd, &admin_cmd); if (ret == 0) { mon = (struct wdc_nvme_purge_monitor_data *) output; printf("Purge state = 0x%0x\n", admin_cmd.result); @@ -3191,7 +3191,7 @@ static int wdc_clear_pcie_correctable_errors(int argc, char **argv, struct comma admin_cmd.cdw12 = ((WDC_NVME_CLEAR_PCIE_CORR_SUBCMD << WDC_NVME_SUBCMD_SHIFT) | WDC_NVME_CLEAR_PCIE_CORR_CMD); - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &admin_cmd); + ret = nvme_submit_admin_passthru(fd, &admin_cmd); fprintf(stderr, "NVMe Status:%s(%x)\n", nvme_status_to_string(ret), ret); out: return ret; @@ -3348,7 +3348,7 @@ 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_passthru(fd, NVME_IOCTL_ADMIN_CMD, &admin_cmd); + ret = nvme_submit_admin_passthru(fd, &admin_cmd); fprintf(stderr, "NVMe Status:%s(%x)\n", nvme_status_to_string(ret), ret); } else fprintf(stderr, "INFO : WDC : No Assert Dump Present\n"); @@ -3481,7 +3481,7 @@ static int wdc_clear_fw_activate_history(int argc, char **argv, struct command * admin_cmd.cdw12 = ((WDC_NVME_CLEAR_FW_ACT_HIST_SUBCMD << WDC_NVME_SUBCMD_SHIFT) | WDC_NVME_CLEAR_FW_ACT_HIST_CMD); - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &admin_cmd); + ret = nvme_submit_admin_passthru(fd, &admin_cmd); fprintf(stderr, "NVMe Status:%s(%x)\n", nvme_status_to_string(ret), ret); out: @@ -3552,7 +3552,7 @@ static int wdc_de_VU_read_size(int fd, __u32 fileId, __u16 spiDestn, __u32* logS cmd.cdw13 = fileId<<16; cmd.cdw14 = spiDestn; - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &cmd); + ret = nvme_submit_admin_passthru(fd, &cmd); if (!ret && logSize) *logSize = cmd.result; @@ -3587,7 +3587,7 @@ static int wdc_de_VU_read_buffer(int fd, __u32 fileId, __u16 spiDestn, __u32 off cmd.addr = (__u64)(__u64)(uintptr_t)dataBuffer; cmd.data_len = *bufferSize; - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &cmd); + ret = nvme_submit_admin_passthru(fd, &cmd); if( ret != WDC_STATUS_SUCCESS) fprintf(stderr, "ERROR : WDC : VUReadBuffer() failed, status:%s(0x%x)\n", nvme_status_to_string(ret), ret); @@ -4241,7 +4241,7 @@ static int wdc_do_drive_resize(int fd, uint64_t new_size) WDC_NVME_DRIVE_RESIZE_CMD); admin_cmd.cdw13 = new_size; - ret = nvme_submit_passthru(fd, NVME_IOCTL_ADMIN_CMD, &admin_cmd); + ret = nvme_submit_admin_passthru(fd, &admin_cmd); return ret; } -- 2.50.1