diff --git a/nvme.c b/nvme.c index 096d43c9d0..44852eb651 100644 --- a/nvme.c +++ b/nvme.c @@ -163,12 +163,17 @@ struct set_reg_config { __u32 pmrmscu; }; -#define NVME_ARGS(n, ...) \ - struct argconfig_commandline_options n[] = { \ - OPT_INCR("verbose", 'v', &verbose_level, verbose), \ - OPT_FMT("output-format", 'o', &output_format_val, output_format), \ - ##__VA_ARGS__, \ - OPT_END() \ +struct nvme_config { + char *output_format; + int verbose; +}; + +#define NVME_ARGS(n, ...) \ + struct argconfig_commandline_options n[] = { \ + OPT_INCR("verbose", 'v', &nvme_cfg.verbose, verbose), \ + OPT_FMT("output-format", 'o', &nvme_cfg.output_format, output_format), \ + ##__VA_ARGS__, \ + OPT_END() \ } static const char nvme_version_string[] = NVME_VERSION; @@ -258,8 +263,9 @@ static const char *pmrctl = "PMRCTL=0xe04 register offset"; static const char *pmrmscl = "PMRMSCL=0xe14 register offset"; static const char *pmrmscu = "PMRMSCU=0xe18 register offset"; -static char *output_format_val = "normal"; -int verbose_level; +static struct nvme_config nvme_cfg = { + .output_format = "normal", +}; static void *mmap_registers(struct nvme_dev *dev, bool writable); @@ -446,7 +452,7 @@ int parse_and_open(struct nvme_dev **dev, int argc, char **argv, if (ret < 0) argconfig_print_help(desc, opts); else - log_level = map_log_level(verbose_level, false); + log_level = map_log_level(nvme_cfg.verbose, false); return ret; } @@ -487,7 +493,7 @@ bool nvme_is_output_format_json(void) { enum nvme_print_flags flags; - if (validate_output_format(output_format_val, &flags)) + if (validate_output_format(nvme_cfg.output_format, &flags)) return false; return flags == JSON; @@ -540,7 +546,7 @@ static int get_smart_log(int argc, char **argv, struct command *cmd, struct plug if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -599,7 +605,7 @@ static int get_ana_log(int argc, char **argv, struct command *cmd, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -959,7 +965,7 @@ static int get_endurance_log(int argc, char **argv, struct command *cmd, struct if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -1037,7 +1043,7 @@ static int get_effects_log(int argc, char **argv, struct command *cmd, struct pl if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -1113,7 +1119,7 @@ static int get_supported_log_pages(int argc, char **argv, struct command *cmd, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -1169,7 +1175,7 @@ static int get_error_log(int argc, char **argv, struct command *cmd, struct plug if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -1234,7 +1240,7 @@ static int get_fw_log(int argc, char **argv, struct command *cmd, struct plugin if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -1283,7 +1289,7 @@ static int get_changed_ns_list_log(int argc, char **argv, struct command *cmd, s if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -1340,7 +1346,7 @@ static int get_pred_lat_per_nvmset_log(int argc, char **argv, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -1402,7 +1408,7 @@ static int get_pred_lat_event_agg_log(int argc, char **argv, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -1488,7 +1494,7 @@ static int get_persistent_event_log(int argc, char **argv, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -1604,7 +1610,7 @@ static int get_endurance_event_agg_log(int argc, char **argv, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -1679,7 +1685,7 @@ static int get_lba_status_log(int argc, char **argv, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -1729,7 +1735,7 @@ static int get_resv_notif_log(int argc, char **argv, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -1784,7 +1790,7 @@ static int get_boot_part_log(int argc, char **argv, struct command *cmd, struct if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -1878,7 +1884,7 @@ static int get_phy_rx_eom_log(int argc, char **argv, struct command *cmd, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -1966,7 +1972,7 @@ static int get_media_unit_stat_log(int argc, char **argv, struct command *cmd, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -2018,7 +2024,7 @@ static int get_supp_cap_config_log(int argc, char **argv, struct command *cmd, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -2378,7 +2384,7 @@ static int sanitize_log(int argc, char **argv, struct command *command, struct p if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -2430,7 +2436,7 @@ static int get_fid_support_effects_log(int argc, char **argv, struct command *cm if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -2479,7 +2485,7 @@ static int get_mi_cmd_support_effects_log(int argc, char **argv, struct command if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -2532,7 +2538,7 @@ static int list_ctrl(int argc, char **argv, struct command *cmd, struct plugin * if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -2591,7 +2597,7 @@ static int list_ns(int argc, char **argv, struct command *cmd, struct plugin *pl if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0 || (flags != JSON && flags != NORMAL)) { nvme_show_error("Invalid output format"); return -EINVAL; @@ -2661,7 +2667,7 @@ static int id_ns_lba_format(int argc, char **argv, struct command *cmd, struct p if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -2713,7 +2719,7 @@ static int id_endurance_grp_list(int argc, char **argv, struct command *cmd, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0 || (flags != JSON && flags != NORMAL)) { nvme_show_error("invalid output format"); return -EINVAL; @@ -3284,7 +3290,7 @@ static int list_subsys(int argc, char **argv, struct command *cmd, if (optind < argc) devname = basename(argv[optind++]); - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0 || (flags != JSON && flags != NORMAL)) { nvme_show_error("Invalid output format"); return -EINVAL; @@ -3343,7 +3349,7 @@ static int list(int argc, char **argv, struct command *cmd, struct plugin *plugi if (err < 0) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0 || (flags != JSON && flags != NORMAL)) { nvme_show_error("Invalid output format"); return -EINVAL; @@ -3407,7 +3413,7 @@ int __id_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -3460,7 +3466,7 @@ static int nvm_id_ctrl(int argc, char **argv, struct command *cmd, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -3512,7 +3518,7 @@ static int nvm_id_ns(int argc, char **argv, struct command *cmd, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -3586,7 +3592,7 @@ static int nvm_id_ns_lba_format(int argc, char **argv, struct command *cmd, stru if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -3651,7 +3657,7 @@ static int ns_descs(int argc, char **argv, struct command *cmd, struct plugin *p if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -3727,7 +3733,7 @@ static int id_ns(int argc, char **argv, struct command *cmd, struct plugin *plug if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -3802,7 +3808,7 @@ static int cmd_set_independent_id_ns(int argc, char **argv, struct command *cmd, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -3855,7 +3861,7 @@ static int id_ns_granularity(int argc, char **argv, struct command *cmd, struct if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -3904,7 +3910,7 @@ static int id_nvmset(int argc, char **argv, struct command *cmd, struct plugin * if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -3956,7 +3962,7 @@ static int id_uuid(int argc, char **argv, struct command *cmd, struct plugin *pl if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -4053,7 +4059,7 @@ static int id_domain(int argc, char **argv, struct command *cmd, struct plugin * if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -4199,7 +4205,7 @@ static int primary_ctrl_caps(int argc, char **argv, struct command *cmd, struct if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -4254,7 +4260,7 @@ static int list_secondary_ctrl(int argc, char **argv, struct command *cmd, struc if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -4509,7 +4515,7 @@ static int self_test_log(int argc, char **argv, struct command *cmd, struct plug if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -5394,7 +5400,7 @@ static int show_registers(int argc, char **argv, struct command *cmd, struct plu if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -5670,7 +5676,7 @@ static int get_register(int argc, char **argv, struct command *cmd, struct plugi if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -7607,7 +7613,7 @@ static int resv_report(int argc, char **argv, struct command *cmd, struct plugin if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -8306,7 +8312,7 @@ static int get_lba_status(int argc, char **argv, struct command *cmd, if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err; @@ -9517,7 +9523,7 @@ static int show_topology_cmd(int argc, char **argv, struct command *command, str if (err) return err; - err = validate_output_format(output_format_val, &flags); + err = validate_output_format(nvme_cfg.output_format, &flags); if (err < 0) { nvme_show_error("Invalid output format"); return err;