Skip to content

Commit 3c1bab2

Browse files
committed
nvme: add output-format-version option
The JSON outputs changed to verbose by the format version 2. Signed-off-by: Tokunori Ikegami <[email protected]>
1 parent 8be8e96 commit 3c1bab2

3 files changed

Lines changed: 42 additions & 39 deletions

File tree

nvme-print-json.c

Lines changed: 38 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -197,9 +197,9 @@ static void json_id_iocs_iocsc(struct json_object *obj_iocsc, __u64 iocsc)
197197
obj_add_str(obj_iocsc, "NVM Command Set", nvmcs ? "Selected" : "Not selected");
198198
}
199199

200-
static bool human(void)
200+
static bool verbose_mode(void)
201201
{
202-
return json_print_ops.flags & VERBOSE;
202+
return json_print_ops.flags & VERBOSE || nvme_cfg.output_format_ver == 2;
203203
}
204204

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

702-
if (human()) {
702+
if (verbose_mode()) {
703703
struct json_object *crt = json_create_object();
704704

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

1360-
if (human()) {
1360+
if (verbose_mode()) {
13611361
json_single_property_human(offset, value64, r);
13621362
} else {
13631363
sprintf(json_str, "0x%02x", offset);
@@ -2540,7 +2540,7 @@ static void json_print_nvme_subsystem_list(nvme_root_t r, bool show_ana)
25402540
obj_add_str(subsystem_attrs, "Name", nvme_subsystem_get_name(s));
25412541
obj_add_str(subsystem_attrs, "NQN", nvme_subsystem_get_nqn(s));
25422542

2543-
if (json_print_ops.flags & VERBOSE) {
2543+
if (verbose_mode()) {
25442544
obj_add_str(subsystem_attrs, "Model",
25452545
nvme_subsystem_get_model(s));
25462546
obj_add_str(subsystem_attrs, "Serial",
@@ -2572,7 +2572,7 @@ static void json_ctrl_registers_cap(void *bar, struct json_object *r)
25722572
{
25732573
uint64_t cap = mmio_read64(bar + NVME_REG_CAP);
25742574

2575-
if (human())
2575+
if (verbose_mode())
25762576
json_registers_cap((struct nvme_bar_cap *)&cap, obj_create_array_obj(r, "cap"));
25772577
else
25782578
obj_add_uint64(r, "cap", cap);
@@ -2582,7 +2582,7 @@ static void json_ctrl_registers_vs(void *bar, struct json_object *r)
25822582
{
25832583
uint32_t vs = mmio_read32(bar + NVME_REG_VS);
25842584

2585-
if (human())
2585+
if (verbose_mode())
25862586
json_registers_version(vs, obj_create_array_obj(r, "vs"));
25872587
else
25882588
obj_add_int(r, "vs", vs);
@@ -2592,7 +2592,7 @@ static void json_ctrl_registers_intms(void *bar, struct json_object *r)
25922592
{
25932593
uint32_t intms = mmio_read32(bar + NVME_REG_INTMS);
25942594

2595-
if (human())
2595+
if (verbose_mode())
25962596
json_registers_intms(intms, obj_create_array_obj(r, "intms"));
25972597
else
25982598
obj_add_int(r, "intms", intms);
@@ -2602,7 +2602,7 @@ static void json_ctrl_registers_intmc(void *bar, struct json_object *r)
26022602
{
26032603
uint32_t intmc = mmio_read32(bar + NVME_REG_INTMC);
26042604

2605-
if (human())
2605+
if (verbose_mode())
26062606
json_registers_intmc(intmc, obj_create_array_obj(r, "intmc"));
26072607
else
26082608
obj_add_int(r, "intmc", intmc);
@@ -2612,7 +2612,7 @@ static void json_ctrl_registers_cc(void *bar, struct json_object *r)
26122612
{
26132613
uint32_t cc = mmio_read32(bar + NVME_REG_CC);
26142614

2615-
if (human())
2615+
if (verbose_mode())
26162616
json_registers_cc(cc, obj_create_array_obj(r, "cc"));
26172617
else
26182618
obj_add_int(r, "cc", cc);
@@ -2622,7 +2622,7 @@ static void json_ctrl_registers_csts(void *bar, struct json_object *r)
26222622
{
26232623
uint32_t csts = mmio_read32(bar + NVME_REG_CSTS);
26242624

2625-
if (human())
2625+
if (verbose_mode())
26262626
json_registers_csts(csts, obj_create_array_obj(r, "csts"));
26272627
else
26282628
obj_add_int(r, "csts", csts);
@@ -2632,7 +2632,7 @@ static void json_ctrl_registers_nssr(void *bar, struct json_object *r)
26322632
{
26332633
uint32_t nssr = mmio_read32(bar + NVME_REG_NSSR);
26342634

2635-
if (human())
2635+
if (verbose_mode())
26362636
json_registers_nssr(nssr, obj_create_array_obj(r, "nssr"));
26372637
else
26382638
obj_add_int(r, "nssr", nssr);
@@ -2642,7 +2642,7 @@ static void json_ctrl_registers_nssd(void *bar, struct json_object *r)
26422642
{
26432643
uint32_t nssd = mmio_read32(bar + NVME_REG_NSSD);
26442644

2645-
if (human())
2645+
if (verbose_mode())
26462646
json_registers_nssd(nssd, obj_create_array_obj(r, "nssd"));
26472647
else
26482648
obj_add_int(r, "nssd", nssd);
@@ -2652,7 +2652,7 @@ static void json_ctrl_registers_crto(void *bar, struct json_object *r)
26522652
{
26532653
uint32_t crto = mmio_read32(bar + NVME_REG_CRTO);
26542654

2655-
if (human())
2655+
if (verbose_mode())
26562656
json_registers_crto(crto, obj_create_array_obj(r, "crto"));
26572657
else
26582658
obj_add_int(r, "crto", crto);
@@ -2662,7 +2662,7 @@ static void json_ctrl_registers_aqa(void *bar, struct json_object *r)
26622662
{
26632663
uint32_t aqa = mmio_read32(bar + NVME_REG_AQA);
26642664

2665-
if (human())
2665+
if (verbose_mode())
26662666
json_registers_aqa(aqa, obj_create_array_obj(r, "aqa"));
26672667
else
26682668
obj_add_int(r, "aqa", aqa);
@@ -2672,7 +2672,7 @@ static void json_ctrl_registers_asq(void *bar, struct json_object *r)
26722672
{
26732673
uint64_t asq = mmio_read64(bar + NVME_REG_ASQ);
26742674

2675-
if (human())
2675+
if (verbose_mode())
26762676
json_registers_asq(asq, obj_create_array_obj(r, "asq"));
26772677
else
26782678
obj_add_uint64(r, "asq", asq);
@@ -2682,7 +2682,7 @@ static void json_ctrl_registers_acq(void *bar, struct json_object *r)
26822682
{
26832683
uint64_t acq = mmio_read64(bar + NVME_REG_ACQ);
26842684

2685-
if (human())
2685+
if (verbose_mode())
26862686
json_registers_acq(acq, obj_create_array_obj(r, "acq"));
26872687
else
26882688
obj_add_uint64(r, "acq", acq);
@@ -2694,7 +2694,7 @@ static void json_ctrl_registers_cmbloc(void *bar, struct json_object *r)
26942694
uint32_t cmbsz;
26952695
bool support;
26962696

2697-
if (human()) {
2697+
if (verbose_mode()) {
26982698
cmbsz = mmio_read32(bar + NVME_REG_CMBSZ);
26992699
support = nvme_registers_cmbloc_support(cmbsz);
27002700
json_registers_cmbloc(cmbloc, support, obj_create_array_obj(r, "cmbloc"));
@@ -2707,7 +2707,7 @@ static void json_ctrl_registers_cmbsz(void *bar, struct json_object *r)
27072707
{
27082708
uint32_t cmbsz = mmio_read32(bar + NVME_REG_CMBSZ);
27092709

2710-
if (human())
2710+
if (verbose_mode())
27112711
json_registers_cmbsz(cmbsz, obj_create_array_obj(r, "cmbsz"));
27122712
else
27132713
obj_add_int(r, "cmbsz", cmbsz);
@@ -2717,7 +2717,7 @@ static void json_ctrl_registers_bpinfo(void *bar, struct json_object *r)
27172717
{
27182718
uint32_t bpinfo = mmio_read32(bar + NVME_REG_BPINFO);
27192719

2720-
if (human())
2720+
if (verbose_mode())
27212721
json_registers_bpinfo(bpinfo, obj_create_array_obj(r, "bpinfo"));
27222722
else
27232723
obj_add_int(r, "bpinfo", bpinfo);
@@ -2727,7 +2727,7 @@ static void json_ctrl_registers_bprsel(void *bar, struct json_object *r)
27272727
{
27282728
uint32_t bprsel = mmio_read32(bar + NVME_REG_BPRSEL);
27292729

2730-
if (human())
2730+
if (verbose_mode())
27312731
json_registers_bprsel(bprsel, obj_create_array_obj(r, "bprsel"));
27322732
else
27332733
obj_add_int(r, "bprsel", bprsel);
@@ -2737,7 +2737,7 @@ static void json_ctrl_registers_bpmbl(void *bar, struct json_object *r)
27372737
{
27382738
uint64_t bpmbl = mmio_read64(bar + NVME_REG_BPMBL);
27392739

2740-
if (human())
2740+
if (verbose_mode())
27412741
json_registers_bpmbl(bpmbl, obj_create_array_obj(r, "bpmbl"));
27422742
else
27432743
obj_add_uint64(r, "bpmbl", bpmbl);
@@ -2747,7 +2747,7 @@ static void json_ctrl_registers_cmbmsc(void *bar, struct json_object *r)
27472747
{
27482748
uint64_t cmbmsc = mmio_read64(bar + NVME_REG_CMBMSC);
27492749

2750-
if (human())
2750+
if (verbose_mode())
27512751
json_registers_cmbmsc(cmbmsc, obj_create_array_obj(r, "cmbmsc"));
27522752
else
27532753
obj_add_uint64(r, "cmbmsc", cmbmsc);
@@ -2757,7 +2757,7 @@ static void json_ctrl_registers_cmbsts(void *bar, struct json_object *r)
27572757
{
27582758
uint32_t cmbsts = mmio_read32(bar + NVME_REG_CMBSTS);
27592759

2760-
if (human())
2760+
if (verbose_mode())
27612761
json_registers_cmbsts(cmbsts, obj_create_array_obj(r, "cmbsts"));
27622762
else
27632763
obj_add_int(r, "cmbsts", cmbsts);
@@ -2767,7 +2767,7 @@ static void json_ctrl_registers_cmbebs(void *bar, struct json_object *r)
27672767
{
27682768
uint32_t cmbebs = mmio_read32(bar + NVME_REG_CMBEBS);
27692769

2770-
if (human())
2770+
if (verbose_mode())
27712771
json_registers_cmbebs(cmbebs, obj_create_array_obj(r, "cmbebs"));
27722772
else
27732773
obj_add_int(r, "cmbebs", cmbebs);
@@ -2777,7 +2777,7 @@ static void json_ctrl_registers_cmbswtp(void *bar, struct json_object *r)
27772777
{
27782778
uint32_t cmbswtp = mmio_read32(bar + NVME_REG_CMBSWTP);
27792779

2780-
if (human())
2780+
if (verbose_mode())
27812781
json_registers_cmbswtp(cmbswtp, obj_create_array_obj(r, "cmbswtp"));
27822782
else
27832783
obj_add_int(r, "cmbswtp", cmbswtp);
@@ -2787,7 +2787,7 @@ static void json_ctrl_registers_pmrcap(void *bar, struct json_object *r)
27872787
{
27882788
uint32_t pmrcap = mmio_read32(bar + NVME_REG_PMRCAP);
27892789

2790-
if (human())
2790+
if (verbose_mode())
27912791
json_registers_pmrcap(pmrcap, obj_create_array_obj(r, "pmrcap"));
27922792
else
27932793
obj_add_int(r, "pmrcap", pmrcap);
@@ -2797,7 +2797,7 @@ static void json_ctrl_registers_pmrctl(void *bar, struct json_object *r)
27972797
{
27982798
uint32_t pmrctl = mmio_read32(bar + NVME_REG_PMRCTL);
27992799

2800-
if (human())
2800+
if (verbose_mode())
28012801
json_registers_pmrctl(pmrctl, obj_create_array_obj(r, "pmrctl"));
28022802
else
28032803
obj_add_int(r, "pmrctl", pmrctl);
@@ -2809,7 +2809,7 @@ static void json_ctrl_registers_pmrsts(void *bar, struct json_object *r)
28092809
uint32_t pmrctl;
28102810
bool ready;
28112811

2812-
if (human()) {
2812+
if (verbose_mode()) {
28132813
pmrctl = mmio_read32(bar + NVME_REG_PMRCTL);
28142814
ready = nvme_registers_pmrctl_ready(pmrctl);
28152815
json_registers_pmrsts(pmrsts, ready, obj_create_array_obj(r, "pmrsts"));
@@ -2822,7 +2822,7 @@ static void json_ctrl_registers_pmrebs(void *bar, struct json_object *r)
28222822
{
28232823
uint32_t pmrebs = mmio_read32(bar + NVME_REG_PMREBS);
28242824

2825-
if (human())
2825+
if (verbose_mode())
28262826
json_registers_pmrebs(pmrebs, obj_create_array_obj(r, "pmrebs"));
28272827
else
28282828
obj_add_int(r, "pmrebs", pmrebs);
@@ -2832,7 +2832,7 @@ static void json_ctrl_registers_pmrswtp(void *bar, struct json_object *r)
28322832
{
28332833
uint32_t pmrswtp = mmio_read32(bar + NVME_REG_PMRSWTP);
28342834

2835-
if (human())
2835+
if (verbose_mode())
28362836
json_registers_pmrswtp(pmrswtp, obj_create_array_obj(r, "pmrswtp"));
28372837
else
28382838
obj_add_int(r, "pmrswtp", pmrswtp);
@@ -2842,7 +2842,7 @@ static void json_ctrl_registers_pmrmscl(void *bar, struct json_object *r)
28422842
{
28432843
uint32_t pmrmscl = mmio_read32(bar + NVME_REG_PMRMSCL);
28442844

2845-
if (human())
2845+
if (verbose_mode())
28462846
json_registers_pmrmscl(pmrmscl, obj_create_array_obj(r, "pmrmscl"));
28472847
else
28482848
obj_add_uint(r, "pmrmscl", pmrmscl);
@@ -2852,7 +2852,7 @@ static void json_ctrl_registers_pmrmscu(void *bar, struct json_object *r)
28522852
{
28532853
uint32_t pmrmscu = mmio_read32(bar + NVME_REG_PMRMSCU);
28542854

2855-
if (human())
2855+
if (verbose_mode())
28562856
json_registers_pmrmscu(pmrmscu, obj_create_array_obj(r, "pmrmscu"));
28572857
else
28582858
obj_add_uint(r, "pmrmscu", pmrmscu);
@@ -2997,14 +2997,13 @@ static void json_ctrl_register_human(int offset, uint64_t value, struct json_obj
29972997

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

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

3007-
if (human) {
3006+
if (verbose_mode()) {
30083007
obj_add_uint64(r, nvme_register_to_string(offset), value);
30093008
json_ctrl_register_human(offset, value, r);
30103009
} else {
@@ -3132,7 +3131,7 @@ static void json_nvme_id_ctrl_nvm(struct nvme_id_ctrl_nvm *ctrl_nvm)
31323131
obj_add_uint(r, "wzdsl", ctrl_nvm->wzdsl);
31333132
obj_add_uint(r, "aocs", le16_to_cpu(ctrl_nvm->aocs));
31343133

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

@@ -4490,7 +4489,7 @@ static void json_list_item(nvme_ns_t n)
44904489

44914490
static void json_print_list_items(nvme_root_t t)
44924491
{
4493-
if (json_print_ops.flags & VERBOSE)
4492+
if (verbose_mode())
44944493
json_detail_list(t);
44954494
else
44964495
json_simple_list(t);
@@ -4587,7 +4586,7 @@ static void json_simple_topology(nvme_root_t r)
45874586
obj_add_str(subsystem_attrs, "Name", nvme_subsystem_get_name(s));
45884587
obj_add_str(subsystem_attrs, "NQN", nvme_subsystem_get_nqn(s));
45894588

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

4730-
if (json_print_ops.flags & VERBOSE) {
4729+
if (verbose_mode()) {
47314730
json_directive_show_fields(type, oper, result, buf, r);
47324731
} else if (buf) {
47334732
data = json_create_array();

nvme.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,7 @@ static const char *pmrmscu = "PMRMSCU=0xe18 register offset";
259259

260260
struct nvme_config nvme_cfg = {
261261
.output_format = "normal",
262+
.output_format_ver = 1,
262263
};
263264

264265
static void *mmap_registers(struct nvme_dev *dev, bool writable);

nvme.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ struct nvme_config {
7979
int verbose;
8080
__u32 timeout;
8181
bool dry_run;
82+
unsigned int output_format_ver;
8283
};
8384

8485
/*
@@ -92,6 +93,8 @@ struct nvme_config {
9293
##__VA_ARGS__, \
9394
OPT_UINT("timeout", 't', &nvme_cfg.timeout, timeout), \
9495
OPT_FLAG("dry-run", 0, &nvme_cfg.dry_run, dry_run), \
96+
OPT_UINT("output-format-version", 0, &nvme_cfg.output_format_ver, \
97+
"output format version: 1|2"), \
9598
OPT_END() \
9699
}
97100

0 commit comments

Comments
 (0)