libnvme(2)
πΈ NAME πΈ
okay so bestie, welcome to the libnvme(2) API manual β¨ and today's main character is:
struct nvme_uring_cmd β the nvme uring command structure π
no cap, that's literally its whole job description.
π¦ SYNOPSIS π¦
here's the whole thing, character for character, don't touch a single semicolon or she WILL bite:
struct nvme_uring_cmd {
__u8 opcode;
__u8 flags;
__u16 rsvd1;
__u32 nsid;
__u32 cdw2;
__u32 cdw3;
__u64 metadata;
__u64 addr;
__u32 metadata_len;
__u32 data_len;
__u32 cdw10;
__u32 cdw11;
__u32 cdw12;
__u32 cdw13;
__u32 cdw14;
__u32 cdw15;
__u32 timeout_ms;
__u32 rsvd2;
};
look at her π₯Ή so organized. so struct-shaped.
π Members π
one by one, the full roster, nobody gets left out:
opcodeβ the Operation code, bestie. go checkenum nvme_io_opcodesandenum nvme_admin_opcodesif you wanna know your options πflagsβ not supported π it was intended for command flags (eg: SGL, FUSE) but it's just sitting there, decorative, unserious.rsvd1β Reserved for future use β¨ (manifesting that future, tbh)nsidβ Namespace Identifier, or the Fabrics type. two jobs, one field, she's versatile πcdw2β Command Dword 2 (no spec defined use). she's free-spirited. ungoverned.cdw3β Command Dword 3 (no spec defined use). same vibe, different dword πmetadataβ User space address to metadata buffer (NULLif not used). no thoughts, just address π«Άaddrβ User space address to data buffer (NULLif not used). the data one this time, not the metadata one, don't get it twisted βmetadata_lenβ Metadata buffer transfer length. how much metadata we talkin' πdata_lenβ Data buffer transfer length. how much data we talkin' πβ¨cdw10β Command Dword 10 (command specific) π₯cdw11β Command Dword 11 (command specific) π₯cdw12β Command Dword 12 (command specific) π₯cdw13β Command Dword 13 (command specific) π₯cdw14β Command Dword 14 (command specific) π₯cdw15β Command Dword 15 (command specific) π₯ the whole dword squad. iconic lineup, truly.timeout_msβ If non-zero, overrides system default timeout in milliseconds β° yes bestie, you can just. overrule the system. when you set it. when it's non-zero. slay.rsvd2β Reserved for future use (and fills an implicit struct pad
and yeah, that last one literally just. cuts off there in the source π§ i am not finishing that sentence for you, i refuse, that's not my business, i don't make the rules π she said "(and fills an implicit struct pad" and then simply stopped speaking. queen behavior honestly.
and that's the whole page, bestie!! π this was struct nvme_uring_cmd, brought to you by the libnvme(2) API manual, dated July 2026 π go forth and uring, and remember: reserved fields are reserved for a reason, no touching π
ββοΈ periodt ππ¦β¨
π¦ where this page comes from
- ubuntu stonking: libnvme-dev 1.16.2-1build1 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms