json_print(r);
}
-static void json_select_result(__u32 result)
+static void json_select_result(enum nvme_features_id fid, __u32 result)
{
- struct json_object *r = json_create_object();
+ struct json_object *r = json_r ? json_r : json_create_object();
+ char json_str[STR_LEN];
struct json_object *feature = json_create_array();
if (result & 0x1)
if (result & 0x4)
array_add_str(feature, "changeable");
- obj_add_array(r, "Feature", feature);
+ sprintf(json_str, "Feature: %#0*x: select", fid ? 4 : 2, fid);
+ obj_add_array(r, json_str, feature);
- json_print(r);
+ obj_print(r);
}
static void json_self_test_log(struct nvme_self_test_log *self_test, __u8 dst_entries,
le32_to_cpu(sanitize->etcend));
}
-static void stdout_select_result(__u32 result)
+static void stdout_select_result(enum nvme_features_id fid, __u32 result)
{
if (result & 0x1)
printf(" Feature is saveable\n");
void d(unsigned char *buf, int len, int width, int group)
{
- nvme_print(d, 0, buf, len, width, group);
+ nvme_print(d, NORMAL, buf, len, width, group);
}
void d_raw(unsigned char *buf, unsigned len)
}
}
-void nvme_show_select_result(__u32 result)
+void nvme_show_select_result(enum nvme_features_id fid, __u32 result)
{
- nvme_print(select_result, 0, result);
+ nvme_print(select_result, NORMAL, fid, result);
}
const char *nvme_feature_lba_type_to_string(__u8 type)
void nvme_show_lba_status_info(__u32 result)
{
- nvme_print(lba_status_info, 0, result);
+ nvme_print(lba_status_info, NORMAL, result);
}
const char *nvme_host_metadata_type_to_string(enum nvme_features_id fid,
void nvme_feature_show(enum nvme_features_id fid, int sel, unsigned int result)
{
- nvme_print(show_feature, 0, fid, sel, result);
+ nvme_print(show_feature, NORMAL, fid, sel, result);
}
void nvme_feature_show_fields(enum nvme_features_id fid, unsigned int result, unsigned char *buf)
{
- nvme_print(show_feature_fields, 0, fid, result, buf);
+ nvme_print(show_feature_fields, NORMAL, fid, result, buf);
}
void nvme_show_lba_status(struct nvme_lba_status *list, unsigned long len,
void nvme_show_list_item(nvme_ns_t n)
{
- nvme_print(list_item, 0, n);
+ nvme_print(list_item, NORMAL, n);
}
void nvme_show_list_items(nvme_root_t r, enum nvme_print_flags flags)
void (*resv_report)(struct nvme_resv_status *status, int bytes, bool eds);
void (*sanitize_log_page)(struct nvme_sanitize_log_page *sanitize_log, const char *devname);
void (*secondary_ctrl_list)(const struct nvme_secondary_ctrl_list *sc_list, __u32 count);
- void (*select_result)(__u32 result);
+ void (*select_result)(enum nvme_features_id fid, __u32 result);
void (*self_test_log)(struct nvme_self_test_log *self_test, __u8 dst_entries, __u32 size, const char *devname);
void (*single_property)(int offset, uint64_t value64);
void (*smart_log)(struct nvme_smart_log *smart, unsigned int nsid, const char *devname);
void (*zns_id_ctrl)(struct nvme_zns_id_ctrl *ctrl);
void (*zns_id_ns)(struct nvme_zns_id_ns *ns, struct nvme_id_ns *id_ns);
void (*zns_report_zones)(void *report, __u32 descs, __u8 ext_size, __u32 report_size, struct json_object *zone_list);
- void (*show_feature)(enum nvme_features_id id, int sel, unsigned int result);
- void (*show_feature_fields)(enum nvme_features_id id, unsigned int result, unsigned char *buf);
+ void (*show_feature)(enum nvme_features_id fid, int sel, unsigned int result);
+ void (*show_feature_fields)(enum nvme_features_id fid, unsigned int result, unsigned char *buf);
void (*id_ctrl_rpmbs)(__le32 ctrl_rpmbs);
void (*lba_range)(struct nvme_lba_range_type *lbrt, int nr_ranges);
void (*lba_status_info)(__u32 result);
void nvme_feature_show_fields(enum nvme_features_id fid, unsigned int result, unsigned char *buf);
void nvme_directive_show(__u8 type, __u8 oper, __u16 spec, __u32 nsid, __u32 result,
void *buf, __u32 len, enum nvme_print_flags flags);
-void nvme_show_select_result(__u32 result);
+void nvme_show_select_result(enum nvme_features_id fid, __u32 result);
void nvme_show_zns_id_ctrl(struct nvme_zns_id_ctrl *ctrl,
enum nvme_print_flags flags);
if (!cfg.raw_binary || !buf) {
nvme_feature_show(cfg.feature_id, cfg.sel, result);
if (cfg.sel == 3)
- nvme_show_select_result(result);
+ nvme_show_select_result(cfg.feature_id, result);
else if (cfg.human_readable)
nvme_feature_show_fields(cfg.feature_id, result,
buf);
nvme_select_to_string(sel),
eol_plp_failure_mode_to_string(result));
if (sel == NVME_GET_FEATURES_SEL_SUPPORTED)
- nvme_show_select_result(result);
+ nvme_show_select_result(fid, result);
} else {
nvme_show_error("Could not get feature: %#0*x.", fid ? 4 : 2, fid);
}