Skip to content

Commit b057e79

Browse files
nvme-print: expose PEL print functions
This allows for any plugin to more easily parse Persistent Event log data without requiring that the various event parsing functions be copied into the plugin. This then allows for more specific handling of Vendor Specific Information associated with any event or for any Vendor Specific Events. Signed-off-by: Brandon Paupore <[email protected]> Reviewed-by: Jeffrey Lien <[email protected]>
1 parent 85154a1 commit b057e79

3 files changed

Lines changed: 143 additions & 75 deletions

File tree

nvme-print-json.c

Lines changed: 50 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1560,8 +1560,8 @@ static void json_add_bitmap(int i, __u8 seb, struct json_object *r)
15601560
}
15611561
}
15621562

1563-
static void json_pevent_log_head(struct nvme_persistent_event_log *pevent_log_head,
1564-
struct json_object *r)
1563+
void nvme_json_pevent_log_head(struct nvme_persistent_event_log *pevent_log_head,
1564+
struct json_object *r)
15651565
{
15661566
int i;
15671567
char sn[sizeof(pevent_log_head->sn) + 1];
@@ -1596,8 +1596,8 @@ static void json_pevent_log_head(struct nvme_persistent_event_log *pevent_log_he
15961596
}
15971597
}
15981598

1599-
static void json_pel_smart_health(void *pevent_log_info, __u32 offset,
1600-
struct json_object *valid_attrs)
1599+
void nvme_json_pel_smart_health(void *pevent_log_info, __u32 offset,
1600+
struct json_object *valid_attrs)
16011601
{
16021602
char key[128];
16031603
struct nvme_smart_log *smart_event = pevent_log_info + offset;
@@ -1654,7 +1654,8 @@ static void json_pel_smart_health(void *pevent_log_info, __u32 offset,
16541654
le32_to_cpu(smart_event->thm_temp2_total_time));
16551655
}
16561656

1657-
static void json_pel_fw_commit(void *pevent_log_info, __u32 offset, struct json_object *valid_attrs)
1657+
void nvme_json_pel_fw_commit(void *pevent_log_info, __u32 offset,
1658+
struct json_object *valid_attrs)
16581659
{
16591660
char fw_str[50];
16601661
struct nvme_fw_commit_event *fw_commit_event = pevent_log_info + offset;
@@ -1673,7 +1674,8 @@ static void json_pel_fw_commit(void *pevent_log_info, __u32 offset, struct json_
16731674
le16_to_cpu(fw_commit_event->vndr_assign_fw_commit_rc));
16741675
}
16751676

1676-
static void json_pel_timestamp(void *pevent_log_info, __u32 offset, struct json_object *valid_attrs)
1677+
void nvme_json_pel_timestamp(void *pevent_log_info, __u32 offset,
1678+
struct json_object *valid_attrs)
16771679
{
16781680
struct nvme_time_stamp_change_event *ts_change_event = pevent_log_info + offset;
16791681

@@ -1682,8 +1684,9 @@ static void json_pel_timestamp(void *pevent_log_info, __u32 offset, struct json_
16821684
le64_to_cpu(ts_change_event->ml_secs_since_reset));
16831685
}
16841686

1685-
static void json_pel_power_on_reset(void *pevent_log_info, __u32 offset,
1686-
struct json_object *valid_attrs, __le16 vsil, __le16 el)
1687+
void nvme_json_pel_power_on_reset(void *pevent_log_info, __u32 offset,
1688+
struct json_object *valid_attrs,
1689+
__le16 vsil, __le16 el)
16871690
{
16881691
__u64 *fw_rev;
16891692
char fw_str[50];
@@ -1711,16 +1714,17 @@ static void json_pel_power_on_reset(void *pevent_log_info, __u32 offset,
17111714
}
17121715
}
17131716

1714-
static void json_pel_nss_hw_error(void *pevent_log_info, __u32 offset,
1715-
struct json_object *valid_attrs)
1717+
void nvme_json_pel_nss_hw_error(void *pevent_log_info, __u32 offset,
1718+
struct json_object *valid_attrs)
17161719
{
17171720
struct nvme_nss_hw_err_event *nss_hw_err_event = pevent_log_info + offset;
17181721

17191722
obj_add_uint(valid_attrs, "nss_hw_err_code",
17201723
le16_to_cpu(nss_hw_err_event->nss_hw_err_event_code));
17211724
}
17221725

1723-
static void json_pel_change_ns(void *pevent_log_info, __u32 offset, struct json_object *valid_attrs)
1726+
void nvme_json_pel_change_ns(void *pevent_log_info, __u32 offset,
1727+
struct json_object *valid_attrs)
17241728
{
17251729
struct nvme_change_ns_event *ns_event = pevent_log_info + offset;
17261730

@@ -1735,8 +1739,8 @@ static void json_pel_change_ns(void *pevent_log_info, __u32 offset, struct json_
17351739
obj_add_uint(valid_attrs, "nsid", le32_to_cpu(ns_event->nsid));
17361740
}
17371741

1738-
static void json_pel_format_start(void *pevent_log_info, __u32 offset,
1739-
struct json_object *valid_attrs)
1742+
void nvme_json_pel_format_start(void *pevent_log_info, __u32 offset,
1743+
struct json_object *valid_attrs)
17401744
{
17411745
struct nvme_format_nvm_start_event *format_start_event = pevent_log_info + offset;
17421746

@@ -1746,8 +1750,8 @@ static void json_pel_format_start(void *pevent_log_info, __u32 offset,
17461750
le32_to_cpu(format_start_event->format_nvm_cdw10));
17471751
}
17481752

1749-
static void json_pel_format_completion(void *pevent_log_info, __u32 offset,
1750-
struct json_object *valid_attrs)
1753+
void nvme_json_pel_format_completion(void *pevent_log_info, __u32 offset,
1754+
struct json_object *valid_attrs)
17511755
{
17521756
struct nvme_format_nvm_compln_event *format_cmpln_event = pevent_log_info + offset;
17531757

@@ -1757,8 +1761,8 @@ static void json_pel_format_completion(void *pevent_log_info, __u32 offset,
17571761
obj_add_uint(valid_attrs, "compln_info", le16_to_cpu(format_cmpln_event->compln_info));
17581762
obj_add_uint(valid_attrs, "status_field", le32_to_cpu(format_cmpln_event->status_field));
17591763
}
1760-
static void json_pel_sanitize_start(void *pevent_log_info, __u32 offset,
1761-
struct json_object *valid_attrs)
1764+
void nvme_json_pel_sanitize_start(void *pevent_log_info, __u32 offset,
1765+
struct json_object *valid_attrs)
17621766
{
17631767
struct nvme_sanitize_start_event *sanitize_start_event = pevent_log_info + offset;
17641768

@@ -1767,8 +1771,8 @@ static void json_pel_sanitize_start(void *pevent_log_info, __u32 offset,
17671771
obj_add_uint(valid_attrs, "sani_cdw11", le32_to_cpu(sanitize_start_event->sani_cdw11));
17681772
}
17691773

1770-
static void json_pel_sanitize_completion(void *pevent_log_info, __u32 offset,
1771-
struct json_object *valid_attrs)
1774+
void nvme_json_pel_sanitize_completion(void *pevent_log_info, __u32 offset,
1775+
struct json_object *valid_attrs)
17721776
{
17731777
struct nvme_sanitize_compln_event *sanitize_cmpln_event = pevent_log_info + offset;
17741778

@@ -1777,8 +1781,8 @@ static void json_pel_sanitize_completion(void *pevent_log_info, __u32 offset,
17771781
obj_add_uint(valid_attrs, "cmpln_info", le16_to_cpu(sanitize_cmpln_event->cmpln_info));
17781782
}
17791783

1780-
static void json_pel_set_feature(void *pevent_log_info, __u32 offset,
1781-
struct json_object *valid_attrs)
1784+
void nvme_json_pel_set_feature(void *pevent_log_info, __u32 offset,
1785+
struct json_object *valid_attrs)
17821786
{
17831787
struct nvme_set_feature_event *set_feat_event = pevent_log_info + offset;
17841788
int fid = NVME_GET(le32_to_cpu(set_feat_event->cdw_mem[0]), SET_FEATURES_CDW10_FID);
@@ -1796,14 +1800,14 @@ static void json_pel_set_feature(void *pevent_log_info, __u32 offset,
17961800
}
17971801
}
17981802

1799-
static void json_pel_telemetry_crt(void *pevent_log_info, __u32 offset,
1800-
struct json_object *valid_attrs)
1803+
void nvme_json_pel_telemetry_crt(void *pevent_log_info, __u32 offset,
1804+
struct json_object *valid_attrs)
18011805
{
18021806
obj_d(valid_attrs, "create", pevent_log_info + offset, 512, 16, 1);
18031807
}
18041808

1805-
static void json_pel_thermal_excursion(void *pevent_log_info, __u32 offset,
1806-
struct json_object *valid_attrs)
1809+
void nvme_json_pel_thermal_excursion(void *pevent_log_info, __u32 offset,
1810+
struct json_object *valid_attrs)
18071811
{
18081812
struct nvme_thermal_exc_event *thermal_exc_event = pevent_log_info + offset;
18091813

@@ -1850,8 +1854,9 @@ static void json_pel_vs_event_data(struct json_object *valid_attrs, void *vsed,
18501854
obj_add_obj(valid_attrs, "vs_event_data", vs_data);
18511855
}
18521856

1853-
static void json_pel_vendor_specific_event(void *pevent_log_info, __u32 offset,
1854-
__u32 event_data_len, struct json_object *valid_attrs)
1857+
void nvme_json_pel_vendor_specific_event(void *pevent_log_info, __u32 offset,
1858+
__u32 event_data_len,
1859+
struct json_object *valid_attrs)
18551860
{
18561861
__u32 progress = 0;
18571862
__u16 vsedl;
@@ -1925,48 +1930,49 @@ static void json_pevent_entry(void *pevent_log_info, __u8 action, __u32 size, co
19251930

19261931
switch (pevent_entry_head->etype) {
19271932
case NVME_PEL_SMART_HEALTH_EVENT:
1928-
json_pel_smart_health(pevent_log_info, offset, valid_attrs);
1933+
nvme_json_pel_smart_health(pevent_log_info, offset, valid_attrs);
19291934
break;
19301935
case NVME_PEL_FW_COMMIT_EVENT:
1931-
json_pel_fw_commit(pevent_log_info, offset, valid_attrs);
1936+
nvme_json_pel_fw_commit(pevent_log_info, offset, valid_attrs);
19321937
break;
19331938
case NVME_PEL_TIMESTAMP_EVENT:
1934-
json_pel_timestamp(pevent_log_info, offset, valid_attrs);
1939+
nvme_json_pel_timestamp(pevent_log_info, offset, valid_attrs);
19351940
break;
19361941
case NVME_PEL_POWER_ON_RESET_EVENT:
1937-
json_pel_power_on_reset(pevent_log_info, offset, valid_attrs,
1938-
pevent_entry_head->vsil, pevent_entry_head->el);
1942+
nvme_json_pel_power_on_reset(pevent_log_info, offset, valid_attrs,
1943+
pevent_entry_head->vsil,
1944+
pevent_entry_head->el);
19391945
break;
19401946
case NVME_PEL_NSS_HW_ERROR_EVENT:
1941-
json_pel_nss_hw_error(pevent_log_info, offset, valid_attrs);
1947+
nvme_json_pel_nss_hw_error(pevent_log_info, offset, valid_attrs);
19421948
break;
19431949
case NVME_PEL_CHANGE_NS_EVENT:
1944-
json_pel_change_ns(pevent_log_info, offset, valid_attrs);
1950+
nvme_json_pel_change_ns(pevent_log_info, offset, valid_attrs);
19451951
break;
19461952
case NVME_PEL_FORMAT_START_EVENT:
1947-
json_pel_format_start(pevent_log_info, offset, valid_attrs);
1953+
nvme_json_pel_format_start(pevent_log_info, offset, valid_attrs);
19481954
break;
19491955
case NVME_PEL_FORMAT_COMPLETION_EVENT:
1950-
json_pel_format_completion(pevent_log_info, offset, valid_attrs);
1956+
nvme_json_pel_format_completion(pevent_log_info, offset, valid_attrs);
19511957
break;
19521958
case NVME_PEL_SANITIZE_START_EVENT:
1953-
json_pel_sanitize_start(pevent_log_info, offset, valid_attrs);
1959+
nvme_json_pel_sanitize_start(pevent_log_info, offset, valid_attrs);
19541960
break;
19551961
case NVME_PEL_SANITIZE_COMPLETION_EVENT:
1956-
json_pel_sanitize_completion(pevent_log_info, offset, valid_attrs);
1962+
nvme_json_pel_sanitize_completion(pevent_log_info, offset, valid_attrs);
19571963
break;
19581964
case NVME_PEL_SET_FEATURE_EVENT:
1959-
json_pel_set_feature(pevent_log_info, offset, valid_attrs);
1965+
nvme_json_pel_set_feature(pevent_log_info, offset, valid_attrs);
19601966
break;
19611967
case NVME_PEL_TELEMETRY_CRT:
1962-
json_pel_telemetry_crt(pevent_log_info, offset, valid_attrs);
1968+
nvme_json_pel_telemetry_crt(pevent_log_info, offset, valid_attrs);
19631969
break;
19641970
case NVME_PEL_THERMAL_EXCURSION_EVENT:
1965-
json_pel_thermal_excursion(pevent_log_info, offset, valid_attrs);
1971+
nvme_json_pel_thermal_excursion(pevent_log_info, offset, valid_attrs);
19661972
break;
19671973
case NVME_PEL_VENDOR_SPECIFIC_EVENT:
1968-
json_pel_vendor_specific_event(pevent_log_info, offset, el - vsil,
1969-
valid_attrs);
1974+
nvme_json_pel_vendor_specific_event(pevent_log_info, offset, el - vsil,
1975+
valid_attrs);
19701976
break;
19711977
default:
19721978
break;
@@ -1985,7 +1991,7 @@ static void json_persistent_event_log(void *pevent_log_info, __u8 action,
19851991
__u32 offset = sizeof(struct nvme_persistent_event_log);
19861992

19871993
if (size >= offset) {
1988-
json_pevent_log_head(pevent_log_info, r);
1994+
nvme_json_pevent_log_head(pevent_log_info, r);
19891995
json_pevent_entry(pevent_log_info, action, size, devname, offset, valid);
19901996
obj_add_array(r, "list_of_event_entries", valid);
19911997
} else {

0 commit comments

Comments
 (0)