Skip to content

Commit 1dca43c

Browse files
ikegami-tigaw
authored andcommitted
nvme-print-stdout: add get log command verbose outputs
Still only supported partial log pages to output. Signed-off-by: Tokunori Ikegami <[email protected]>
1 parent bee791f commit 1dca43c

File tree

4 files changed

+114
-0
lines changed

4 files changed

+114
-0
lines changed

nvme-print-stdout.c

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6048,6 +6048,110 @@ static void stdout_relatives(nvme_root_t r, const char *name)
60486048
nvme_resources_free(&res);
60496049
}
60506050

6051+
static void stdout_log(const char *devname, struct nvme_get_log_args *args)
6052+
{
6053+
switch (args->lid) {
6054+
case NVME_LOG_LID_SUPPORTED_LOG_PAGES:
6055+
break;
6056+
case NVME_LOG_LID_ERROR:
6057+
stdout_error_log((struct nvme_error_log_page *)args->log,
6058+
args->len / sizeof(struct nvme_error_log_page), devname);
6059+
break;
6060+
case NVME_LOG_LID_SMART:
6061+
stdout_smart_log((struct nvme_smart_log *)args->log, args->nsid, devname);
6062+
break;
6063+
case NVME_LOG_LID_FW_SLOT:
6064+
stdout_fw_log((struct nvme_firmware_slot *)args->log, devname);
6065+
break;
6066+
case NVME_LOG_LID_CHANGED_NS:
6067+
stdout_changed_ns_list_log((struct nvme_ns_list *)args->log, devname, false);
6068+
break;
6069+
case NVME_LOG_LID_CMD_EFFECTS:
6070+
break;
6071+
case NVME_LOG_LID_DEVICE_SELF_TEST:
6072+
stdout_self_test_log((struct nvme_self_test_log *)args->log,
6073+
args->len / sizeof(struct nvme_self_test_log), 0, devname);
6074+
break;
6075+
case NVME_LOG_LID_TELEMETRY_HOST:
6076+
break;
6077+
case NVME_LOG_LID_TELEMETRY_CTRL:
6078+
break;
6079+
case NVME_LOG_LID_ENDURANCE_GROUP:
6080+
stdout_endurance_log((struct nvme_endurance_group_log *)args->log, args->lsi,
6081+
devname);
6082+
break;
6083+
case NVME_LOG_LID_PREDICTABLE_LAT_NVMSET:
6084+
stdout_predictable_latency_per_nvmset(
6085+
(struct nvme_nvmset_predictable_lat_log *)args->log, args->lsi, devname);
6086+
break;
6087+
case NVME_LOG_LID_PREDICTABLE_LAT_AGG:
6088+
stdout_predictable_latency_event_agg_log(
6089+
(struct nvme_aggregate_predictable_lat_event *)args->log,
6090+
args->len > sizeof(__u64) ? (args->len - sizeof(__u64)) / sizeof(__le16) : 0,
6091+
args->len, devname);
6092+
break;
6093+
case NVME_LOG_LID_ANA:
6094+
break;
6095+
case NVME_LOG_LID_PERSISTENT_EVENT:
6096+
break;
6097+
case NVME_LOG_LID_LBA_STATUS:
6098+
break;
6099+
case NVME_LOG_LID_ENDURANCE_GRP_EVT:
6100+
break;
6101+
case NVME_LOG_LID_MEDIA_UNIT_STATUS:
6102+
break;
6103+
case NVME_LOG_LID_SUPPORTED_CAP_CONFIG_LIST:
6104+
break;
6105+
case NVME_LOG_LID_FID_SUPPORTED_EFFECTS:
6106+
break;
6107+
case NVME_LOG_LID_MI_CMD_SUPPORTED_EFFECTS:
6108+
break;
6109+
case NVME_LOG_LID_CMD_AND_FEAT_LOCKDOWN:
6110+
break;
6111+
case NVME_LOG_LID_BOOT_PARTITION:
6112+
break;
6113+
case NVME_LOG_LID_ROTATIONAL_MEDIA_INFO:
6114+
break;
6115+
case NVME_LOG_LID_DISPERSED_NS_PARTICIPATING_NSS:
6116+
break;
6117+
case NVME_LOG_LID_MGMT_ADDR_LIST:
6118+
break;
6119+
case NVME_LOG_LID_PHY_RX_EOM:
6120+
break;
6121+
case NVME_LOG_LID_REACHABILITY_GROUPS:
6122+
break;
6123+
case NVME_LOG_LID_REACHABILITY_ASSOCIATIONS:
6124+
break;
6125+
case NVME_LOG_LID_CHANGED_ALLOC_NS_LIST:
6126+
stdout_changed_ns_list_log((struct nvme_ns_list *)args->log, devname, true);
6127+
break;
6128+
case NVME_LOG_LID_FDP_CONFIGS:
6129+
break;
6130+
case NVME_LOG_LID_FDP_RUH_USAGE:
6131+
break;
6132+
case NVME_LOG_LID_FDP_STATS:
6133+
break;
6134+
case NVME_LOG_LID_FDP_EVENTS:
6135+
break;
6136+
case NVME_LOG_LID_DISCOVER:
6137+
break;
6138+
case NVME_LOG_LID_HOST_DISCOVER:
6139+
break;
6140+
case NVME_LOG_LID_AVE_DISCOVER:
6141+
break;
6142+
case NVME_LOG_LID_PULL_MODEL_DDC_REQ:
6143+
break;
6144+
case NVME_LOG_LID_RESERVATION:
6145+
break;
6146+
case NVME_LOG_LID_SANITIZE:
6147+
break;
6148+
case NVME_LOG_LID_ZNS_CHANGED_ZONES:
6149+
break;
6150+
default:
6151+
break;
6152+
}
6153+
}
6154+
60516155
static struct print_ops stdout_print_ops = {
60526156
/* libnvme types.h print functions */
60536157
.ana_log = stdout_ana_log,
@@ -6124,6 +6228,7 @@ static struct print_ops stdout_print_ops = {
61246228
.host_discovery_log = stdout_host_discovery_log,
61256229
.ave_discovery_log = stdout_ave_discovery_log,
61266230
.pull_model_ddc_req_log = stdout_pull_model_ddc_req_log,
6231+
.log = stdout_log,
61276232

61286233
/* libnvme tree print functions */
61296234
.list_item = stdout_list_item,

nvme-print.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1668,3 +1668,8 @@ void nvme_show_pull_model_ddc_req_log(struct nvme_pull_model_ddc_req_log *log,
16681668
{
16691669
nvme_print(pull_model_ddc_req_log, flags, log);
16701670
}
1671+
1672+
void nvme_show_log(const char *devname, struct nvme_get_log_args *args, nvme_print_flags_t flags)
1673+
{
1674+
nvme_print(log, flags, devname, args);
1675+
}

nvme-print.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ struct print_ops {
9898
void (*host_discovery_log)(struct nvme_host_discover_log *log);
9999
void (*ave_discovery_log)(struct nvme_ave_discover_log *log);
100100
void (*pull_model_ddc_req_log)(struct nvme_pull_model_ddc_req_log *log);
101+
void (*log)(const char *devname, struct nvme_get_log_args *args);
101102

102103
/* libnvme tree print functions */
103104
void (*list_item)(nvme_ns_t n);
@@ -359,6 +360,7 @@ void nvme_show_host_discovery_log(struct nvme_host_discover_log *log, nvme_print
359360
void nvme_show_ave_discovery_log(struct nvme_ave_discover_log *log, nvme_print_flags_t flags);
360361
void nvme_show_pull_model_ddc_req_log(struct nvme_pull_model_ddc_req_log *log,
361362
nvme_print_flags_t flags);
363+
void nvme_show_log(const char *devname, struct nvme_get_log_args *args, nvme_print_flags_t flags);
362364

363365
extern char *alloc_error;
364366
#endif /* NVME_PRINT_H */

nvme.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2528,6 +2528,8 @@ static int get_log(int argc, char **argv, struct command *cmd, struct plugin *pl
25282528
printf("Device:%s log-id:%d namespace-id:%#x\n", dev->name, cfg.log_id,
25292529
cfg.namespace_id);
25302530
d(log, cfg.log_len, 16, 1);
2531+
if (argconfig_parse_seen(opts, "verbose"))
2532+
nvme_show_log(dev->name, &args, VERBOSE);
25312533
} else {
25322534
d_raw((unsigned char *)log, cfg.log_len);
25332535
}

0 commit comments

Comments
 (0)