nvmf_default_config(&cfg);
- ret = flags = validate_output_format(format);
- if (ret < 0)
+ ret = validate_output_format(format, &flags);
+ if (ret < 0) {
+ nvme_show_error("Invalid output format");
return ret;
+ }
f = fopen(PATH_NVMF_DISC, "r");
if (f == NULL) {
if (ret)
return ret;
- ret = flags = validate_output_format(format);
- if (ret < 0)
+ ret = validate_output_format(format, &flags);
+ if (ret < 0) {
+ nvme_show_error("Invalid output format");
return ret;
+ }
if (!strcmp(config_file, "none"))
config_file = NULL;
if (ret)
return ret;
- flags = validate_output_format(format);
+ ret = validate_output_format(format, &flags);
+ if (ret < 0) {
+ nvme_show_error("Invalid output format");
+ return ret;
+ }
if (!subsysnqn) {
fprintf(stderr,
return get_dev(dev, argc, argv, flags);
}
-enum nvme_print_flags validate_output_format(const char *format)
+int validate_output_format(const char *format, enum nvme_print_flags *flags)
{
+ enum nvme_print_flags f;
+
if (!format)
return -EINVAL;
if (!strcmp(format, "normal"))
- return NORMAL;
-
- if (!strcmp(format, "json"))
- return JSON;
+ f = NORMAL;
+ else if (!strcmp(format, "json"))
+ f = JSON;
+ else if (!strcmp(format, "binary"))
+ f = BINARY;
+ else
+ return -EINVAL;
- if (!strcmp(format, "binary"))
- return BINARY;
+ *flags = f;
- return -EINVAL;
+ return 0;
}
bool nvme_is_output_format_json(void)
{
- return validate_output_format(output_format_val) == JSON;
+ enum nvme_print_flags flags;
+
+ if (validate_output_format(output_format_val, &flags))
+ return false;
+
+ return flags == JSON;
}
void dev_close(struct nvme_dev *dev)
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
- if (flags != JSON && flags != NORMAL) {
+ err = validate_output_format(output_format_val, &flags);
+ if (err < 0 || (flags != JSON && flags != NORMAL)) {
nvme_show_error("Invalid output format");
- return err;
+ return -EINVAL;
}
if (!cfg.namespace_id) {
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
- if (flags != JSON && flags != NORMAL) {
+ err = validate_output_format(output_format_val, &flags);
+ if (err < 0 || (flags != JSON && flags != NORMAL)) {
nvme_show_error("invalid output format");
- return err;
+ return -EINVAL;
}
endgrp_list = nvme_alloc(sizeof(*endgrp_list));
if (optind < argc)
devname = basename(argv[optind++]);
- err = flags = validate_output_format(output_format_val);
- if (flags != JSON && flags != NORMAL) {
+ err = validate_output_format(output_format_val, &flags);
+ if (err < 0 || (flags != JSON && flags != NORMAL)) {
nvme_show_error("Invalid output format");
- goto ret;
+ return -EINVAL;
}
if (argconfig_parse_seen(opts, "verbose"))
if (err < 0)
return err;
- flags = validate_output_format(output_format_val);
- if (flags != JSON && flags != NORMAL) {
+ err = validate_output_format(output_format_val, &flags);
+ if (err < 0 || (flags != JSON && flags != NORMAL)) {
nvme_show_error("Invalid output format");
return -EINVAL;
}
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
return err;
r = nvme_scan(NULL);
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
goto free_tree;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
if (err)
return err;
- err = flags = validate_output_format(output_format_val);
+ err = validate_output_format(output_format_val, &flags);
if (err < 0) {
nvme_show_error("Invalid output format");
return err;
extern const char *output_format;
-enum nvme_print_flags validate_output_format(const char *format);
+int validate_output_format(const char *format, enum nvme_print_flags *flags);
bool nvme_is_output_format_json(void);
int __id_ctrl(int argc, char **argv, struct command *cmd,
struct plugin *plugin, void (*vs)(uint8_t *vs, struct json_object *root));
if (err)
return err;
- err = flags = validate_output_format(cfg.output_format);
+ err = validate_output_format(cfg.output_format, &flags);
if (flags < 0)
goto out;
if (err)
return err;
- err = flags = validate_output_format(cfg.output_format);
+ err = validate_output_format(cfg.output_format, &flags);
if (flags < 0)
goto out;
if (err)
return err;
- err = flags = validate_output_format(cfg.output_format);
+ err = validate_output_format(cfg.output_format, &flags);
if (flags < 0)
goto out;
if (err)
return err;
- err = flags = validate_output_format(cfg.output_format);
+ err = validate_output_format(cfg.output_format, &flags);
if (flags < 0)
goto out;
if (err)
return err;
- err = flags = validate_output_format(cfg.output_format);
+ err = validate_output_format(cfg.output_format, &flags);
if (flags < 0)
goto out;
struct huawei_list_item *list_items;
unsigned int i, n, ret;
unsigned int huawei_num = 0;
- int fmt;
+ enum nvme_print_flags fmt;
const char *desc = "Retrieve basic information for the given huawei device";
struct config {
char *output_format;
if (ret)
return ret;
- fmt = validate_output_format(cfg.output_format);
- if (fmt != JSON && fmt != NORMAL)
- return -EINVAL;
+ ret = validate_output_format(cfg.output_format, &fmt);
+ if (ret < 0 || (fmt != JSON && fmt != NORMAL))
+ return ret;
n = scandir("/dev", &devices, nvme_namespace_filter, alphasort);
if (n <= 0)
if (ret)
return ret;
- ret = flags = validate_output_format(format);
+ ret = validate_output_format(format, &flags);
if (ret < 0)
return ret;
}
if (!err) {
- const enum nvme_print_flags print_flag = validate_output_format(format);
+ enum nvme_print_flags print_flag;
+
+ err = validate_output_format(format, &print_flag);
+ if (err < 0) {
+ fprintf(stderr, "Error: Invalid output format.\n");
+ return err;
+ }
if (print_flag == JSON)
ocp_fw_activation_history_json(&fw_history);
else if (print_flag == NORMAL)
ocp_fw_activation_history_normal(&fw_history);
- else {
- fprintf(stderr, "Error: Invalid output format.\n");
- err = -EINVAL;
- }
}
return err;
static int get_c3_log_page(struct nvme_dev *dev, char *format)
{
struct ssd_latency_monitor_log *log_data;
- int ret = 0;
- int fmt = -1;
+ enum nvme_print_flags fmt;
+ int ret;
__u8 *data;
int i;
- fmt = validate_output_format(format);
- if (fmt < 0) {
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR : OCP : invalid output format\n");
- return fmt;
+ return ret;
}
data = malloc(sizeof(__u8) * C3_LATENCY_MON_LOG_BUF_LEN);
case JSON:
ocp_print_C3_log_json(log_data);
break;
+ default:
+ fprintf(stderr, "unhandled output format\n");
+
}
} else {
fprintf(stderr,
static int get_c5_log_page(struct nvme_dev *dev, char *format)
{
- int ret = 0;
- int fmt = -1;
+ enum nvme_print_flags fmt;
+ int ret;
__u8 *data;
int i;
struct unsupported_requirement_log *log_data;
int j;
- fmt = validate_output_format(format);
- if (fmt < 0) {
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR : OCP : invalid output format\n");
- return fmt;
+ return ret;
}
data = (__u8 *)malloc(sizeof(__u8) * C5_UNSUPPORTED_REQS_LEN);
case BINARY:
ocp_print_c5_log_binary(log_data);
break;
+ default:
+ break;
}
} else {
fprintf(stderr, "ERROR : OCP : Unable to read C3 data from buffer\n");
static int get_c1_log_page(struct nvme_dev *dev, char *format)
{
- int ret = 0;
- int fmt = -1;
+ struct ocp_error_recovery_log_page *log_data;
+ enum nvme_print_flags fmt;
+ int ret;
__u8 *data;
int i, j;
- struct ocp_error_recovery_log_page *log_data;
- fmt = validate_output_format(format);
- if (fmt < 0) {
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR : OCP : invalid output format\n");
- return fmt;
+ return ret;
}
data = (__u8 *)malloc(sizeof(__u8) * C1_ERROR_RECOVERY_LOG_BUF_LEN);
case BINARY:
ocp_print_c1_log_binary(log_data);
break;
+ default:
+ break;
}
} else {
fprintf(stderr, "ERROR : OCP : Unable to read C1 data from buffer\n");
static int get_c4_log_page(struct nvme_dev *dev, char *format)
{
- int ret = 0;
- int fmt = -1;
+ struct ocp_device_capabilities_log_page *log_data;
+ enum nvme_print_flags fmt;
+ int ret;
__u8 *data;
int i, j;
- struct ocp_device_capabilities_log_page *log_data;
- fmt = validate_output_format(format);
- if (fmt < 0) {
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR : OCP : invalid output format\n");
- return fmt;
+ return ret;
}
data = (__u8 *)malloc(sizeof(__u8) * C4_DEV_CAP_REQ_LEN);
case BINARY:
ocp_print_c4_log_binary(log_data);
break;
+ default:
+ break;
}
} else {
fprintf(stderr, "ERROR : OCP : Unable to read C4 data from buffer\n");
static int get_c0_log_page(int fd, char *format)
{
+ enum nvme_print_flags fmt;
__u8 *data;
int i;
- int ret = 0;
- int fmt = -1;
+ int ret;
- fmt = validate_output_format(format);
- if (fmt < 0) {
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR : OCP : invalid output format\n");
- return fmt;
+ return ret;
}
data = malloc(sizeof(__u8) * C0_SMART_CLOUD_ATTR_LEN);
case JSON:
ocp_print_C0_log_json(data);
break;
+ default:
+ break;
}
} else {
fprintf(stderr, "ERROR : OCP : Unable to read C0 data from buffer\n");
int solidigm_get_garbage_collection_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
const char *desc = "Get and parse Solidigm vendor specific garbage collection event log.";
+ enum nvme_print_flags flags;
struct nvme_dev *dev;
int err;
__u8 uuid_index;
if (err)
return err;
- enum nvme_print_flags flags = validate_output_format(cfg.output_format);
-
- if (flags == -EINVAL) {
+ err = validate_output_format(cfg.output_format, &flags);
+ if (err) {
fprintf(stderr, "Invalid output format '%s'\n", cfg.output_format);
dev_close(dev);
return -EINVAL;
lt.fd = dev_fd(dev);
- lt.print_flags = validate_output_format(lt.cfg.output_format);
- if (lt.print_flags == -EINVAL) {
+ err = validate_output_format(lt.cfg.output_format, <.print_flags);
+ if (err < 0) {
fprintf(stderr, "Invalid output format '%s'\n", lt.cfg.output_format);
dev_close(dev);
return -EINVAL;
}
if (!err) {
- const enum nvme_print_flags print_flag = validate_output_format(format);
+ enum nvme_print_flags print_flag;
+
+ err = validate_output_format(format, &print_flag);
+ if (err < 0) {
+ fprintf(stderr, "Error: Invalid output format specified: %s.\n", format);
+ return err;
+ }
if (print_flag == NORMAL) {
supported_log_pages_normal(lid_dirs);
} else if (print_flag == JSON) {
supported_log_pages_json(lid_dirs);
- } else {
- fprintf(stderr, "Error: Invalid output format specified: %s.\n", format);
- err = -EINVAL;
}
}
if (err)
return err;
- flags = validate_output_format(cfg.output_format);
- if (flags == -EINVAL) {
+ err = validate_output_format(cfg.output_format, &flags);
+ if (err < 0) {
fprintf(stderr, "Invalid output format '%s'\n", cfg.output_format);
dev_close(dev);
- return flags;
+ return err;
}
uuid_index = solidigm_get_vu_uuid_index(dev);
static int wdc_get_c0_log_page(nvme_root_t r, struct nvme_dev *dev, char *format, int uuid_index,
__u32 namespace_id)
{
- int ret = 0;
- int fmt = -1;
- __u8 *data;
uint32_t device_id, read_vendor_id;
+ enum nvme_print_flags fmt;
+ int ret;
+ __u8 *data;
if (!wdc_check_device(r, dev))
return -1;
- fmt = validate_output_format(format);
- if (fmt < 0) {
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC: invalid output format\n");
- return fmt;
+ return ret;
}
ret = wdc_get_pci_ids(r, dev, &device_id, &read_vendor_id);
static int wdc_get_ca_log_page(nvme_root_t r, struct nvme_dev *dev, char *format)
{
- int ret = 0;
- int fmt = -1;
- __u8 *data;
- struct wdc_ssd_ca_perf_stats *perf;
uint32_t read_device_id, read_vendor_id;
+ struct wdc_ssd_ca_perf_stats *perf;
+ enum nvme_print_flags fmt;
__u32 cust_id;
+ __u8 *data;
+ int ret;
if (!wdc_check_device(r, dev))
return -1;
- fmt = validate_output_format(format);
- if (fmt < 0) {
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC: invalid output format\n");
- return fmt;
+ return ret;
}
/* verify the 0xCA log page is supported */
static int wdc_get_c1_log_page(nvme_root_t r, struct nvme_dev *dev,
char *format, uint8_t interval)
{
- int ret = 0;
- int fmt = -1;
+ struct wdc_log_page_subpage_header *sph;
+ struct wdc_ssd_perf_stats *perf;
+ struct wdc_log_page_header *l;
+ enum nvme_print_flags fmt;
+ int total_subpages;
+ int skip_cnt = 4;
__u8 *data;
__u8 *p;
int i;
- int skip_cnt = 4;
- int total_subpages;
- struct wdc_log_page_header *l;
- struct wdc_log_page_subpage_header *sph;
- struct wdc_ssd_perf_stats *perf;
+ int ret;
if (!wdc_check_device(r, dev))
return -1;
- fmt = validate_output_format(format);
- if (fmt < 0) {
+
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC: invalid output format\n");
- return fmt;
+ return ret;
}
if (interval < 1 || interval > 15) {
static int wdc_get_c3_log_page(nvme_root_t r, struct nvme_dev *dev, char *format)
{
- int ret = 0;
- int fmt = -1;
+ struct wdc_ssd_latency_monitor_log *log_data;
+ enum nvme_print_flags fmt;
__u8 *data;
+ int ret;
int i;
- struct wdc_ssd_latency_monitor_log *log_data;
if (!wdc_check_device(r, dev))
return -1;
- fmt = validate_output_format(format);
- if (fmt < 0) {
+
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC: invalid output format\n");
- return fmt;
+ return ret;
}
data = (__u8 *)malloc(sizeof(__u8) * WDC_LATENCY_MON_LOG_BUF_LEN);
static int wdc_get_ocp_c1_log_page(nvme_root_t r, struct nvme_dev *dev, char *format)
{
- int ret = 0;
- int fmt = -1;
+ struct wdc_ocp_c1_error_recovery_log *log_data;
+ enum nvme_print_flags fmt;
__u8 *data;
+ int ret;
int i;
- struct wdc_ocp_c1_error_recovery_log *log_data;
if (!wdc_check_device(r, dev))
return -1;
- fmt = validate_output_format(format);
- if (fmt < 0) {
+
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC: invalid output format\n");
- return fmt;
+ return ret;
}
data = (__u8 *)malloc(sizeof(__u8) * WDC_ERROR_REC_LOG_BUF_LEN);
static int wdc_get_ocp_c4_log_page(nvme_root_t r, struct nvme_dev *dev, char *format)
{
- int ret = 0;
- int fmt = -1;
+ struct wdc_ocp_C4_dev_cap_log *log_data;
+ enum nvme_print_flags fmt;
__u8 *data;
+ int ret;
int i;
- struct wdc_ocp_C4_dev_cap_log *log_data;
if (!wdc_check_device(r, dev))
return -1;
- fmt = validate_output_format(format);
- if (fmt < 0) {
+
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC: invalid output format\n");
- return fmt;
+ return ret;
}
data = (__u8 *)malloc(sizeof(__u8) * WDC_DEV_CAP_LOG_BUF_LEN);
static int wdc_get_ocp_c5_log_page(nvme_root_t r, struct nvme_dev *dev, char *format)
{
- int ret = 0;
- int fmt = -1;
+ struct wdc_ocp_C5_unsupported_reqs *log_data;
+ enum nvme_print_flags fmt;
+ int ret;
__u8 *data;
int i;
- struct wdc_ocp_C5_unsupported_reqs *log_data;
if (!wdc_check_device(r, dev))
return -1;
- fmt = validate_output_format(format);
- if (fmt < 0) {
+
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC: invalid output format\n");
- return fmt;
+ return ret;
}
data = (__u8 *)malloc(sizeof(__u8) * WDC_UNSUPPORTED_REQS_LOG_BUF_LEN);
static int wdc_get_d0_log_page(nvme_root_t r, struct nvme_dev *dev, char *format)
{
+ struct wdc_ssd_d0_smart_log *perf;
+ enum nvme_print_flags fmt;
int ret = 0;
- int fmt = -1;
__u8 *data;
- struct wdc_ssd_d0_smart_log *perf;
if (!wdc_check_device(r, dev))
return -1;
- fmt = validate_output_format(format);
- if (fmt < 0) {
+
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC: invalid output format\n");
- return fmt;
+ return ret;
}
/* verify the 0xD0 log page is supported */
const char *log_page_version = "Log Page Version: 0 = vendor, 1 = WDC";
const char *log_page_mask = "Log Page Mask, comma separated list: 0xC0, 0xC1, 0xCA, 0xD0";
const char *namespace_id = "desired namespace id";
+ enum nvme_print_flags fmt;
struct nvme_dev *dev;
nvme_root_t r;
int ret = 0;
int uuid_index = 0;
int page_mask = 0, num, i;
- int fmt = -1;
int log_page_list[16];
__u64 capabilities = 0;
__u32 device_id, read_vendor_id;
struct ocp_cloud_smart_log log;
char buf[2 * sizeof(log.log_page_guid) + 3];
- fmt = validate_output_format(cfg.output_format);
- if (fmt < 0) {
+ ret = validate_output_format(output_format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "Invalid output format: %s\n", cfg.output_format);
goto out;
}
if (strcmp(buf, "0xafd514c97c6f4f9ca4f2bfea2810afc5"))
fprintf(stderr, "Invalid GUID: %s\n", buf);
else {
- if (fmt & BINARY)
+ if (fmt == BINARY)
d_raw((unsigned char *)&log, sizeof(log));
- else if (fmt & JSON)
+ else if (fmt == JSON)
show_cloud_smart_log_json(&log);
else
show_cloud_smart_log_normal(&log, dev);
{
const char *desc = "Retrieve Cloud Log Smart/Health Information";
const char *namespace_id = "desired namespace id";
+ enum nvme_print_flags fmt;
__u64 capabilities = 0;
struct nvme_dev *dev;
- int ret, fmt = -1;
nvme_root_t r;
+ int ret;
__u8 *data;
struct config {
nvme_show_status(ret);
if (!ret) {
- fmt = validate_output_format(cfg.output_format);
- if (fmt < 0) {
+ ret = validate_output_format(cfg.output_format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC %s: invalid output format\n", __func__);
- ret = fmt;
+ } else {
+ /* parse the data */
+ wdc_print_ext_smart_cloud_log(data, fmt);
}
-
- /* parse the data */
- wdc_print_ext_smart_cloud_log(data, fmt);
} else {
fprintf(stderr, "ERROR: WDC: Unable to read C0 Log Page V1 data\n");
ret = -1;
{
const char *desc = "Retrieve Hardware Revision Log Information";
const char *namespace_id = "desired namespace id";
+ enum nvme_print_flags fmt;
__u64 capabilities = 0;
struct nvme_dev *dev;
- int ret, fmt = -1;
+ int ret;
__u8 *data = NULL;
nvme_root_t r;
nvme_show_status(ret);
if (!ret) {
- fmt = validate_output_format(cfg.output_format);
- if (fmt < 0) {
+ ret = validate_output_format(cfg.output_format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC %s: invalid output format\n", __func__);
- ret = fmt;
goto free_buf;
}
case JSON:
wdc_print_hw_rev_log_json(data);
break;
+ default:
+ break;
}
} else {
fprintf(stderr, "ERROR: WDC: Unable to read Hardware Revision Log Page data\n");
const char *desc = "Retrieve Device Write Amplication Factor";
const char *namespace_id = "desired namespace id";
struct nvme_smart_log smart_log;
+ enum nvme_print_flags fmt;
struct nvme_dev *dev;
__u8 *data;
nvme_root_t r;
int ret = 0;
- int fmt = -1;
__u64 capabilities = 0;
struct __packed wdc_nvme_ext_smart_log * ext_smart_log_ptr;
long double data_units_written = 0,
if (strcmp(cfg.output_format, "json"))
nvme_show_status(ret);
- fmt = validate_output_format(cfg.output_format);
- if (fmt < 0) {
+ ret = validate_output_format(cfg.output_format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC %s: invalid output format\n", __func__);
- ret = fmt;
goto out;
}
static int wdc_get_fw_act_history(nvme_root_t r, struct nvme_dev *dev,
char *format)
{
- int ret = 0;
- int fmt = -1;
- __u8 *data;
struct wdc_fw_act_history_log_hdr *fw_act_history_hdr;
+ enum nvme_print_flags fmt;
+ int ret;
+ __u8 *data;
if (!wdc_check_device(r, dev))
return -1;
- fmt = validate_output_format(format);
- if (fmt < 0) {
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC: invalid output format\n");
- return fmt;
+ return ret;
}
/* verify the FW Activate History log page is supported */
static int wdc_get_fw_act_history_C2(nvme_root_t r, struct nvme_dev *dev,
char *format)
{
- int ret = 0;
- int fmt = -1;
- __u8 *data;
- __u32 cust_id = 0;
struct wdc_fw_act_history_log_format_c2 *fw_act_history_log;
__u32 tot_entries = 0, num_entries = 0;
__u32 vendor_id = 0, device_id = 0;
+ __u32 cust_id = 0;
+ enum nvme_print_flags fmt;
+ __u8 *data;
+ int ret;
if (!wdc_check_device(r, dev))
return -1;
- fmt = validate_output_format(format);
- if (fmt < 0) {
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC: invalid output format\n");
- return fmt;
+ return ret;
}
ret = wdc_get_pci_ids(r, dev, &device_id, &vendor_id);
struct plugin *plugin)
{
const char *desc = "Retrieve Log Page Directory.";
+ enum nvme_print_flags fmt;
struct nvme_dev *dev;
int ret = 0;
nvme_root_t r;
if (ret)
return ret;
- ret = validate_output_format(cfg.output_format);
+ ret = validate_output_format(cfg.output_format, &fmt);
if (ret < 0) {
fprintf(stderr, "%s: ERROR: WDC: invalid output format\n", __func__);
dev_close(dev);
return ret;
}
- ret = 0;
r = nvme_scan(NULL);
capabilities = wdc_get_drive_capabilities(r, dev);
0, &result);
if (!ret) {
- if (!strcmp(cfg.output_format, "binary"))
+ switch (fmt) {
+ case BINARY:
d_raw((unsigned char *)data, 32);
- else if (!strcmp(cfg.output_format, "json"))
+ break;
+ case JSON:
__json_log_page_directory(dir);
- else
+ break;
+ default:
__show_log_page_directory(dir);
+ }
} else {
fprintf(stderr, "NVMe Status:%s(%x)\n",
nvme_status_to_string(ret, false), ret);
static int wdc_do_vs_nand_stats_sn810_2(struct nvme_dev *dev, char *format)
{
- int ret;
- int fmt = -1;
+ enum nvme_print_flags fmt;
uint8_t *data = NULL;
+ int ret;
data = NULL;
ret = nvme_get_ext_smart_cloud_log(dev_fd(dev), &data, 0,
fprintf(stderr, "ERROR: WDC: %s : Failed to retrieve NAND stats\n", __func__);
goto out;
} else {
- fmt = validate_output_format(format);
- if (fmt < 0) {
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC: %s : invalid output format\n", __func__);
- ret = fmt;
goto out;
}
case JSON:
wdc_print_ext_smart_cloud_log_json(data, WDC_SCA_V1_NAND_STATS);
break;
+ default:
+ break;
}
}
static int wdc_do_vs_nand_stats(struct nvme_dev *dev, char *format)
{
- int ret;
- int fmt = -1;
+ enum nvme_print_flags fmt;
uint8_t *output = NULL;
__u16 version = 0;
+ int ret;
output = (uint8_t *)calloc(WDC_NVME_NAND_STATS_SIZE, sizeof(uint8_t));
if (!output) {
fprintf(stderr, "ERROR: WDC: %s : Failed to retrieve NAND stats\n", __func__);
goto out;
} else {
- fmt = validate_output_format(format);
- if (fmt < 0) {
+ ret = validate_output_format(format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC: invalid output format\n");
- ret = fmt;
goto out;
}
case JSON:
wdc_print_nand_stats_json(version, output);
break;
+ default:
+ break;
}
}
struct plugin *plugin)
{
const char *desc = "Retrieve PCIE statistics.";
+ enum nvme_print_flags fmt;
struct nvme_dev *dev;
- int ret = 0;
nvme_root_t r;
+ int ret;
__u64 capabilities = 0;
- int fmt = -1;
_cleanup_huge_ struct nvme_mem_huge mh = { 0, };
struct wdc_vs_pcie_stats *pcieStatsPtr = NULL;
int pcie_stats_size = sizeof(struct wdc_vs_pcie_stats);
if (ret)
return ret;
-
r = nvme_scan(NULL);
- fmt = validate_output_format(cfg.output_format);
- if (fmt < 0) {
+ ret = validate_output_format(cfg.output_format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC: invalid output format\n");
- ret = fmt;
goto out;
}
case JSON:
wdc_print_pcie_stats_json(pcieStatsPtr);
break;
+ default:
+ break;
}
}
}
struct command *command, struct plugin *plugin)
{
const char *desc = "Send a vs-drive-info command.";
+ enum nvme_print_flags fmt;
nvme_root_t r;
uint64_t capabilities = 0;
struct nvme_dev *dev;
__u8 *data = NULL;
__u32 ftl_unit_size = 0, tcg_dev_ownership = 0;
__u16 boot_spec_major = 0, boot_spec_minor = 0;
- int fmt = -1;
struct json_object *root = NULL;
char formatter[41] = { 0 };
char rev_str[16] = { 0 };
if (ret)
return ret;
- fmt = validate_output_format(cfg.output_format);
- if (fmt < 0) {
+ ret = validate_output_format(cfg.output_format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC %s invalid output format\n", __func__);
dev_close(dev);
- return fmt;
+ return ret;
}
/* get the id ctrl data used to fill in drive info below */
const char *desc = "Send a vs-temperature-stats command.";
struct nvme_smart_log smart_log;
struct nvme_id_ctrl id_ctrl;
+ enum nvme_print_flags fmt;
struct nvme_dev *dev;
nvme_root_t r;
uint64_t capabilities = 0;
__u32 hctm_tmt;
int temperature, temp_tmt1, temp_tmt2;
- int ret, fmt = -1;
+ int ret;
struct config {
char *output_format;
return ret;
r = nvme_scan(NULL);
- fmt = validate_output_format(cfg.output_format);
- if (fmt < 0) {
+ ret = validate_output_format(cfg.output_format, &fmt);
+ if (ret < 0) {
fprintf(stderr, "ERROR: WDC: invalid output format\n");
- ret = fmt;
goto out;
}
if (err)
return errno;
- err = flags = validate_output_format(cfg.output_format);
- if (flags < 0)
+ err = validate_output_format(cfg.output_format, &flags);
+ if (err < 0)
goto close_dev;
err = nvme_zns_identify_ctrl(dev_fd(dev), &ctrl);
if (err)
return errno;
- flags = validate_output_format(cfg.output_format);
- if (flags < 0)
+ err = validate_output_format(cfg.output_format, &flags);
+ if (err < 0)
goto close_dev;
if (cfg.vendor_specific)
flags |= VS;
if (err)
return errno;
- flags = validate_output_format(cfg.output_format);
- if (flags < 0)
+ err = validate_output_format(cfg.output_format, &flags);
+ if (err < 0)
goto close_dev;
if (!cfg.namespace_id) {
if (err)
return errno;
- flags = validate_output_format(cfg.output_format);
- if (flags < 0)
+ err = validate_output_format(cfg.output_format, &flags);
+ if (err < 0)
goto close_dev;
if (cfg.verbose)
flags |= VERBOSE;
if (err)
return errno;
- flags = validate_output_format(cfg.output_format);
- if (flags < 0)
+ err = validate_output_format(cfg.output_format, &flags);
+ if (err < 0)
goto close_dev;
if (!cfg.namespace_id) {