libnvme(9)

πŸ“¦ version 3.2, in arch rolling

✨ NAME ✨

okay so bestie, welcome to libnvme(9) β€” this is the API manual page for struct nvme_endurance_group_log, aka the Endurance Group Information Log. it's the struct that holds all the endurance-group tea, and yes it's giving "big log energy" πŸ’…


🌸 SYNOPSIS 🌸

here's the shape of it, exactly as it lives in the headers, no cap:

struct nvme_endurance_group_log {
    __u8 critical_warning;
    __u8 endurance_group_features;
    __u8 rsvd2;
    __u8 avl_spare;
    __u8 avl_spare_threshold;
    __u8 percent_used;
    __le16 domain_identifier;
    __u8 rsvd8[24];
    __u8 endurance_estimate[16];
    __u8 data_units_read[16];
    __u8 data_units_written[16];
    __u8 media_units_written[16];
    __u8 host_read_cmds[16];
    __u8 host_write_cmds[16];
    __u8 media_data_integrity_err[16];
    __u8 num_err_info_log_entries[16];
    __u8 total_end_grp_cap[16];
    __u8 unalloc_end_grp_cap[16];
    __u8 rsvd192[320];
};

lowkey obsessed with how tidy that layout is. 16-byte fields as far as the eye can see 🫢


πŸŽ€ Members πŸŽ€

okay now the member-by-member vibe check, one bullet per field, nothing skipped:

  • critical_warning β€” Critical Warning. yes bestie, pay attention to this one πŸ”₯
  • endurance_group_features β€” Endurance Group Features.
  • rsvd2 β€” Reserved. (it's reserved. we don't touch it. periodt πŸ’€)
  • avl_spare β€” Available Spare.
  • avl_spare_threshold β€” Available Spare Threshold.
  • percent_used β€” Percentage Used.
  • domain_identifier β€” Domain Identifier. it's a __le16, so little-endian, iykyk ✨
  • rsvd8 β€” Reserved. more reserved space, more respect πŸŽ€
  • endurance_estimate β€” Endurance Estimate.
  • data_units_read β€” Data Units Read.
  • data_units_written β€” Data Units Written.
  • media_units_written β€” Media Units Written.
  • host_read_cmds β€” Host Read Commands.
  • host_write_cmds β€” Host Write Commands.
  • media_data_integrity_err β€” Media and Data Integrity Errors. the one you hope stays at zero πŸ™ˆ
  • num_err_info_log_entries β€” Number of Error Information Log Entries.
  • total_end_grp_cap β€” Total Endurance Group Capacity.
  • unalloc_end_grp_cap β€” Unallocated Endurance Group Capacity.
  • rsvd192 β€” Reserved. the big one. 320 bytes of pure reserved icon behavior πŸ‘‘

ngl bestie, all those [16] arrays are just raw bytes β€” the struct doesn't convert anything for you, so that's your job. and please do NOT go writing into the rsvd* fields, they are reserved for a reason 😭

and that's the whole page, fr fr πŸ’– this was struct nvme_endurance_group_log from the API Manual β€” page libnvme(9), dated October 2026. slay, go log some endurance groups responsibly πŸŒˆβ­πŸ¦‹

πŸ“¦ where this page comes from