Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 38 additions & 39 deletions nvme-print-json.c
Original file line number Diff line number Diff line change
Expand Up @@ -197,9 +197,9 @@ static void json_id_iocs_iocsc(struct json_object *obj_iocsc, __u64 iocsc)
obj_add_str(obj_iocsc, "NVM Command Set", nvmcs ? "Selected" : "Not selected");
}

static bool human(void)
static bool verbose_mode(void)
{
return json_print_ops.flags & VERBOSE;
return json_print_ops.flags & VERBOSE || nvme_cfg.output_format_ver == 2;
}

static void json_id_iocs(struct nvme_id_iocs *iocs)
Expand Down Expand Up @@ -699,7 +699,7 @@ static void json_smart_log(struct nvme_smart_log *smart, unsigned int nsid,
nvme_uint128_t media_errors = le128_to_cpu(smart->media_errors);
nvme_uint128_t num_err_log_entries = le128_to_cpu(smart->num_err_log_entries);

if (human()) {
if (verbose_mode()) {
struct json_object *crt = json_create_object();

obj_add_int(crt, "value", smart->critical_warning);
Expand Down Expand Up @@ -1357,7 +1357,7 @@ static void json_single_property(int offset, uint64_t value64)
char json_str[STR_LEN];
uint32_t value32 = (uint32_t)value64;

if (human()) {
if (verbose_mode()) {
json_single_property_human(offset, value64, r);
} else {
sprintf(json_str, "0x%02x", offset);
Expand Down Expand Up @@ -2540,7 +2540,7 @@ static void json_print_nvme_subsystem_list(nvme_root_t r, bool show_ana)
obj_add_str(subsystem_attrs, "Name", nvme_subsystem_get_name(s));
obj_add_str(subsystem_attrs, "NQN", nvme_subsystem_get_nqn(s));

if (json_print_ops.flags & VERBOSE) {
if (verbose_mode()) {
obj_add_str(subsystem_attrs, "Model",
nvme_subsystem_get_model(s));
obj_add_str(subsystem_attrs, "Serial",
Expand Down Expand Up @@ -2572,7 +2572,7 @@ static void json_ctrl_registers_cap(void *bar, struct json_object *r)
{
uint64_t cap = mmio_read64(bar + NVME_REG_CAP);

if (human())
if (verbose_mode())
json_registers_cap((struct nvme_bar_cap *)&cap, obj_create_array_obj(r, "cap"));
else
obj_add_uint64(r, "cap", cap);
Expand All @@ -2582,7 +2582,7 @@ static void json_ctrl_registers_vs(void *bar, struct json_object *r)
{
uint32_t vs = mmio_read32(bar + NVME_REG_VS);

if (human())
if (verbose_mode())
json_registers_version(vs, obj_create_array_obj(r, "vs"));
else
obj_add_int(r, "vs", vs);
Expand All @@ -2592,7 +2592,7 @@ static void json_ctrl_registers_intms(void *bar, struct json_object *r)
{
uint32_t intms = mmio_read32(bar + NVME_REG_INTMS);

if (human())
if (verbose_mode())
json_registers_intms(intms, obj_create_array_obj(r, "intms"));
else
obj_add_int(r, "intms", intms);
Expand All @@ -2602,7 +2602,7 @@ static void json_ctrl_registers_intmc(void *bar, struct json_object *r)
{
uint32_t intmc = mmio_read32(bar + NVME_REG_INTMC);

if (human())
if (verbose_mode())
json_registers_intmc(intmc, obj_create_array_obj(r, "intmc"));
else
obj_add_int(r, "intmc", intmc);
Expand All @@ -2612,7 +2612,7 @@ static void json_ctrl_registers_cc(void *bar, struct json_object *r)
{
uint32_t cc = mmio_read32(bar + NVME_REG_CC);

if (human())
if (verbose_mode())
json_registers_cc(cc, obj_create_array_obj(r, "cc"));
else
obj_add_int(r, "cc", cc);
Expand All @@ -2622,7 +2622,7 @@ static void json_ctrl_registers_csts(void *bar, struct json_object *r)
{
uint32_t csts = mmio_read32(bar + NVME_REG_CSTS);

if (human())
if (verbose_mode())
json_registers_csts(csts, obj_create_array_obj(r, "csts"));
else
obj_add_int(r, "csts", csts);
Expand All @@ -2632,7 +2632,7 @@ static void json_ctrl_registers_nssr(void *bar, struct json_object *r)
{
uint32_t nssr = mmio_read32(bar + NVME_REG_NSSR);

if (human())
if (verbose_mode())
json_registers_nssr(nssr, obj_create_array_obj(r, "nssr"));
else
obj_add_int(r, "nssr", nssr);
Expand All @@ -2642,7 +2642,7 @@ static void json_ctrl_registers_nssd(void *bar, struct json_object *r)
{
uint32_t nssd = mmio_read32(bar + NVME_REG_NSSD);

if (human())
if (verbose_mode())
json_registers_nssd(nssd, obj_create_array_obj(r, "nssd"));
else
obj_add_int(r, "nssd", nssd);
Expand All @@ -2652,7 +2652,7 @@ static void json_ctrl_registers_crto(void *bar, struct json_object *r)
{
uint32_t crto = mmio_read32(bar + NVME_REG_CRTO);

if (human())
if (verbose_mode())
json_registers_crto(crto, obj_create_array_obj(r, "crto"));
else
obj_add_int(r, "crto", crto);
Expand All @@ -2662,7 +2662,7 @@ static void json_ctrl_registers_aqa(void *bar, struct json_object *r)
{
uint32_t aqa = mmio_read32(bar + NVME_REG_AQA);

if (human())
if (verbose_mode())
json_registers_aqa(aqa, obj_create_array_obj(r, "aqa"));
else
obj_add_int(r, "aqa", aqa);
Expand All @@ -2672,7 +2672,7 @@ static void json_ctrl_registers_asq(void *bar, struct json_object *r)
{
uint64_t asq = mmio_read64(bar + NVME_REG_ASQ);

if (human())
if (verbose_mode())
json_registers_asq(asq, obj_create_array_obj(r, "asq"));
else
obj_add_uint64(r, "asq", asq);
Expand All @@ -2682,7 +2682,7 @@ static void json_ctrl_registers_acq(void *bar, struct json_object *r)
{
uint64_t acq = mmio_read64(bar + NVME_REG_ACQ);

if (human())
if (verbose_mode())
json_registers_acq(acq, obj_create_array_obj(r, "acq"));
else
obj_add_uint64(r, "acq", acq);
Expand All @@ -2694,7 +2694,7 @@ static void json_ctrl_registers_cmbloc(void *bar, struct json_object *r)
uint32_t cmbsz;
bool support;

if (human()) {
if (verbose_mode()) {
cmbsz = mmio_read32(bar + NVME_REG_CMBSZ);
support = nvme_registers_cmbloc_support(cmbsz);
json_registers_cmbloc(cmbloc, support, obj_create_array_obj(r, "cmbloc"));
Expand All @@ -2707,7 +2707,7 @@ static void json_ctrl_registers_cmbsz(void *bar, struct json_object *r)
{
uint32_t cmbsz = mmio_read32(bar + NVME_REG_CMBSZ);

if (human())
if (verbose_mode())
json_registers_cmbsz(cmbsz, obj_create_array_obj(r, "cmbsz"));
else
obj_add_int(r, "cmbsz", cmbsz);
Expand All @@ -2717,7 +2717,7 @@ static void json_ctrl_registers_bpinfo(void *bar, struct json_object *r)
{
uint32_t bpinfo = mmio_read32(bar + NVME_REG_BPINFO);

if (human())
if (verbose_mode())
json_registers_bpinfo(bpinfo, obj_create_array_obj(r, "bpinfo"));
else
obj_add_int(r, "bpinfo", bpinfo);
Expand All @@ -2727,7 +2727,7 @@ static void json_ctrl_registers_bprsel(void *bar, struct json_object *r)
{
uint32_t bprsel = mmio_read32(bar + NVME_REG_BPRSEL);

if (human())
if (verbose_mode())
json_registers_bprsel(bprsel, obj_create_array_obj(r, "bprsel"));
else
obj_add_int(r, "bprsel", bprsel);
Expand All @@ -2737,7 +2737,7 @@ static void json_ctrl_registers_bpmbl(void *bar, struct json_object *r)
{
uint64_t bpmbl = mmio_read64(bar + NVME_REG_BPMBL);

if (human())
if (verbose_mode())
json_registers_bpmbl(bpmbl, obj_create_array_obj(r, "bpmbl"));
else
obj_add_uint64(r, "bpmbl", bpmbl);
Expand All @@ -2747,7 +2747,7 @@ static void json_ctrl_registers_cmbmsc(void *bar, struct json_object *r)
{
uint64_t cmbmsc = mmio_read64(bar + NVME_REG_CMBMSC);

if (human())
if (verbose_mode())
json_registers_cmbmsc(cmbmsc, obj_create_array_obj(r, "cmbmsc"));
else
obj_add_uint64(r, "cmbmsc", cmbmsc);
Expand All @@ -2757,7 +2757,7 @@ static void json_ctrl_registers_cmbsts(void *bar, struct json_object *r)
{
uint32_t cmbsts = mmio_read32(bar + NVME_REG_CMBSTS);

if (human())
if (verbose_mode())
json_registers_cmbsts(cmbsts, obj_create_array_obj(r, "cmbsts"));
else
obj_add_int(r, "cmbsts", cmbsts);
Expand All @@ -2767,7 +2767,7 @@ static void json_ctrl_registers_cmbebs(void *bar, struct json_object *r)
{
uint32_t cmbebs = mmio_read32(bar + NVME_REG_CMBEBS);

if (human())
if (verbose_mode())
json_registers_cmbebs(cmbebs, obj_create_array_obj(r, "cmbebs"));
else
obj_add_int(r, "cmbebs", cmbebs);
Expand All @@ -2777,7 +2777,7 @@ static void json_ctrl_registers_cmbswtp(void *bar, struct json_object *r)
{
uint32_t cmbswtp = mmio_read32(bar + NVME_REG_CMBSWTP);

if (human())
if (verbose_mode())
json_registers_cmbswtp(cmbswtp, obj_create_array_obj(r, "cmbswtp"));
else
obj_add_int(r, "cmbswtp", cmbswtp);
Expand All @@ -2787,7 +2787,7 @@ static void json_ctrl_registers_pmrcap(void *bar, struct json_object *r)
{
uint32_t pmrcap = mmio_read32(bar + NVME_REG_PMRCAP);

if (human())
if (verbose_mode())
json_registers_pmrcap(pmrcap, obj_create_array_obj(r, "pmrcap"));
else
obj_add_int(r, "pmrcap", pmrcap);
Expand All @@ -2797,7 +2797,7 @@ static void json_ctrl_registers_pmrctl(void *bar, struct json_object *r)
{
uint32_t pmrctl = mmio_read32(bar + NVME_REG_PMRCTL);

if (human())
if (verbose_mode())
json_registers_pmrctl(pmrctl, obj_create_array_obj(r, "pmrctl"));
else
obj_add_int(r, "pmrctl", pmrctl);
Expand All @@ -2809,7 +2809,7 @@ static void json_ctrl_registers_pmrsts(void *bar, struct json_object *r)
uint32_t pmrctl;
bool ready;

if (human()) {
if (verbose_mode()) {
pmrctl = mmio_read32(bar + NVME_REG_PMRCTL);
ready = nvme_registers_pmrctl_ready(pmrctl);
json_registers_pmrsts(pmrsts, ready, obj_create_array_obj(r, "pmrsts"));
Expand All @@ -2822,7 +2822,7 @@ static void json_ctrl_registers_pmrebs(void *bar, struct json_object *r)
{
uint32_t pmrebs = mmio_read32(bar + NVME_REG_PMREBS);

if (human())
if (verbose_mode())
json_registers_pmrebs(pmrebs, obj_create_array_obj(r, "pmrebs"));
else
obj_add_int(r, "pmrebs", pmrebs);
Expand All @@ -2832,7 +2832,7 @@ static void json_ctrl_registers_pmrswtp(void *bar, struct json_object *r)
{
uint32_t pmrswtp = mmio_read32(bar + NVME_REG_PMRSWTP);

if (human())
if (verbose_mode())
json_registers_pmrswtp(pmrswtp, obj_create_array_obj(r, "pmrswtp"));
else
obj_add_int(r, "pmrswtp", pmrswtp);
Expand All @@ -2842,7 +2842,7 @@ static void json_ctrl_registers_pmrmscl(void *bar, struct json_object *r)
{
uint32_t pmrmscl = mmio_read32(bar + NVME_REG_PMRMSCL);

if (human())
if (verbose_mode())
json_registers_pmrmscl(pmrmscl, obj_create_array_obj(r, "pmrmscl"));
else
obj_add_uint(r, "pmrmscl", pmrmscl);
Expand All @@ -2852,7 +2852,7 @@ static void json_ctrl_registers_pmrmscu(void *bar, struct json_object *r)
{
uint32_t pmrmscu = mmio_read32(bar + NVME_REG_PMRMSCU);

if (human())
if (verbose_mode())
json_registers_pmrmscu(pmrmscu, obj_create_array_obj(r, "pmrmscu"));
else
obj_add_uint(r, "pmrmscu", pmrmscu);
Expand Down Expand Up @@ -2997,14 +2997,13 @@ static void json_ctrl_register_human(int offset, uint64_t value, struct json_obj

static void json_ctrl_register(int offset, uint64_t value)
{
bool human = json_print_ops.flags & VERBOSE;
struct json_object *r;
char json_str[STR_LEN];

sprintf(json_str, "register: %#04x", offset);
r = obj_create(json_str);

if (human) {
if (verbose_mode()) {
obj_add_uint64(r, nvme_register_to_string(offset), value);
json_ctrl_register_human(offset, value, r);
} else {
Expand Down Expand Up @@ -3132,7 +3131,7 @@ static void json_nvme_id_ctrl_nvm(struct nvme_id_ctrl_nvm *ctrl_nvm)
obj_add_uint(r, "wzdsl", ctrl_nvm->wzdsl);
obj_add_uint(r, "aocs", le16_to_cpu(ctrl_nvm->aocs));

if (json_print_ops.flags & VERBOSE) {
if (verbose_mode()) {
__u16 rsvd = (ctrl_nvm->aocs & 0xfffe) >> 1;
__u8 ralbas = ctrl_nvm->aocs & 0x1;

Expand Down Expand Up @@ -4490,7 +4489,7 @@ static void json_list_item(nvme_ns_t n)

static void json_print_list_items(nvme_root_t t)
{
if (json_print_ops.flags & VERBOSE)
if (verbose_mode())
json_detail_list(t);
else
json_simple_list(t);
Expand Down Expand Up @@ -4587,7 +4586,7 @@ static void json_simple_topology(nvme_root_t r)
obj_add_str(subsystem_attrs, "Name", nvme_subsystem_get_name(s));
obj_add_str(subsystem_attrs, "NQN", nvme_subsystem_get_nqn(s));

if (json_print_ops.flags & VERBOSE) {
if (verbose_mode()) {
obj_add_str(subsystem_attrs, "Model",
nvme_subsystem_get_model(s));
obj_add_str(subsystem_attrs, "Serial",
Expand Down Expand Up @@ -4727,7 +4726,7 @@ static void json_directive_show(__u8 type, __u8 oper, __u16 spec, __u32 nsid, __
sprintf(json_str, "%#x", result);
obj_add_result(r, json_str);

if (json_print_ops.flags & VERBOSE) {
if (verbose_mode()) {
json_directive_show_fields(type, oper, result, buf, r);
} else if (buf) {
data = json_create_array();
Expand Down
4 changes: 3 additions & 1 deletion nvme.c
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@ static const char *block_count = "number of blocks (zeroes based) on device to a
static const char *crkey = "current reservation key";
static const char *csi = "command set identifier";
static const char *buf_len = "buffer len (if) data is sent or received";
static const char *deprecated = "deprecated; does nothing";
static const char *domainid = "Domain Identifier";
static const char *doper = "directive operation";
static const char *dspec_w_dtype = "directive specification associated with directive type";
Expand Down Expand Up @@ -259,6 +260,7 @@ static const char *pmrmscu = "PMRMSCU=0xe18 register offset";

struct nvme_config nvme_cfg = {
.output_format = "normal",
.output_format_ver = 1,
};

static void *mmap_registers(struct nvme_dev *dev, bool writable);
Expand Down Expand Up @@ -6911,7 +6913,7 @@ static int dir_send(int argc, char **argv, struct command *cmd, struct plugin *p
OPT_SHRT("dir-spec", 'S', &cfg.dspec, dspec_w_dtype),
OPT_BYTE("dir-oper", 'O', &cfg.doper, doper),
OPT_SHRT("endir", 'e', &cfg.endir, endir),
OPT_FLAG("human-readable", 'H', &cfg.human_readable, human_readable_directive),
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Best leave it the option around, just to avoid to break anyone. Couldn't we map it to verbose mode ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But if there is no user left, just leave the option. You could add a help text like deprecated; does nothing

OPT_FLAG("human-readable", 'H', &cfg.human_readable, deprecated),
OPT_FLAG("raw-binary", 'b', &cfg.raw_binary, raw_directive),
OPT_FILE("input-file", 'i', &cfg.file, input));

Expand Down
3 changes: 3 additions & 0 deletions nvme.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ struct nvme_config {
int verbose;
__u32 timeout;
bool dry_run;
unsigned int output_format_ver;
};

/*
Expand All @@ -92,6 +93,8 @@ struct nvme_config {
##__VA_ARGS__, \
OPT_UINT("timeout", 't', &nvme_cfg.timeout, timeout), \
OPT_FLAG("dry-run", 0, &nvme_cfg.dry_run, dry_run), \
OPT_UINT("output-format-version", 0, &nvme_cfg.output_format_ver, \
"output format version: 1|2"), \
OPT_END() \
}

Expand Down