libnvme(9)

✨ libnvme β€” API Manual ✨

okay bestie, welcome to the libnvme API manual, section 9 (kernel developer's manual energy, we love that for us) πŸ’… this page is the whole rundown on one very specific little struct, and yes it's giving "why is this one struct getting its own manpage" but honestly it needs it, just trust.


πŸŽ€ NAME πŸŽ€

struct nvme_get_log_args β€” the arguments bundle for the NVMe Admin Get Log command. it's the lil suitcase of everything the command needs to go fetch a log page for you 🧳✨


πŸ¦‹ SYNOPSIS πŸ¦‹

struct nvme_get_log_args {
    __u64 lpo;
    __u32 *result;
    void *log;
    int args_size;
    int fd;
    __u32 timeout;
    enum nvme_cmd_get_log_lid lid;
    __u32 len;
    __u32 nsid;
    enum nvme_csi csi;
    __u16 lsi;
    __u8 lsp;
    __u8 uuidx;
    bool rae;
    bool ot;
};

πŸ’– Members πŸ’–

here's the full roster, one by one, no skipping, no skipping is the rule πŸ”₯

  • lpo β€” log page offset, for when you're doing a partial log transfer (sliding in at a specific spot instead of grabbing the whole thing, periodt).
  • result β€” the command completion result, straight out of CQE dword0. that's the receipts 🧾
  • log β€” the userspace destination address where the data actually gets transferred to. that's where it lands, bestie.
  • args_size β€” the length of the structure itself. yes it measures itself, iconic.
  • fd β€” the file descriptor of the nvme device. your entry point πŸšͺ
  • timeout β€” timeout, in ms. milliseconds, not seconds, don't get caught out πŸ™ˆ
  • lid β€” log page identifier. for the known values, go peek at enum nvme_cmd_get_log_lid.
  • len β€” the length of the user buffer you're providing to hold the log data, in bytes.
  • nsid β€” namespace identifier, if applicable (iykyk β€” sometimes there's just no namespace in the picture).
  • csi β€” command set identifier. known values live in enum nvme_csi.
  • lsi β€” log specific identifier.
  • lsp β€” log specific field.
  • uuidx β€” UUID selection, if it's supported. if it's not, well. πŸ’€
  • rae β€” retain asynchronous events. keep 'em, don't toss 'em.
  • ot β€” offset type πŸŒ€ and this one actually matters: if it's set, lpo specifies the index into the list of data structures; otherwise lpo specifies the byte offset into the log page. two completely different meanings for the same field, so don't mix them up fr fr.

and that's the whole struct, start to finish, every member accounted for 🫢 go forth and pull those log pages, main character πŸ’œ

signing off from the libnvme(9) manual, August 2026 edition β€” API Manual, struct nvme_get_log_args, that's a wrap 🌸

πŸ“¦ where this page comes from