libnvme(9)

πŸ’– libnvme(9) β€” API Manual πŸ’–

okay bestie, sit down, we're doing libnvme(9) today and honestly? it's giving deep kernel lore. no cap, this one's a struct, and she's got eleven members, so grab a strawberry and let's go πŸ“


✨ NAME ✨

struct nvme_lm_migration_recv_args β€” Arguments for the Migration Receive command

like, that's literally her whole job. she holds the arguments. she's the little purse you carry them in πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

struct nvme_lm_migration_recv_args {
    __u64 offset;
    __u32 *result;
    void *data;
    int args_size;
    int fd;
    __u32 timeout;
    __u32 numd;
    __u16 mos;
    __u16 cntlid;
    __u16 csuuidi;
    __u8 sel;
    __u8 uidx;
    __u8 csuidxp;
 };

look at her. immaculate. every field typed out exactly like that, and yes, the closing brace has a little leading space, that's just her vibe, don't touch it 🫢


🌸 Members 🌸

  • offset β€” the Offset. it says, in bytes, where inside the data-that-could-be-returned we're starting from. like a bookmark in a book you haven't read yet, but specifically the starting point for what actually gets sent back to the host. ✨
  • result β€” gets set when the command finishes, and it holds the command's CQE DWORD 0 controller response. so like, the receipt. the little "here's what the controller said" 🧾
  • data β€” Pointer to data. that's it. that's the whole description. she's mysterious, she's a void *, we respect her πŸ™ˆ
  • args_size β€” Length of structure. she measures herself. iconic.
  • fd β€” File descriptor of nvme device. your ticket to the nvme device, fr fr 🎟️
  • timeout β€” Timeout in ms. milliseconds, bestie. patience is measured in milliseconds here ⏳
  • numd β€” Number of Dwords (NUMD). this field says how many dwords to return. and heads up: it's a 0's based value. so it's not how many you said, it's how many you said, minus one. the way that zero-based counting will get you every single time 😭
  • mos β€” Management Operation Specific (MOS). this field is specific to the SEL type. so it changes meaning depending on sel, iykyk πŸ‘‘
  • cntlid β€” Controller ID. this one specifies the identifier of the controller that the operation is being performed on. like tagging the exact controller in the group chat πŸ“²
  • csuuidi β€” Controller State UUID Index (CSUUIDI). if you set this to a non-zero value, it specifies the index to a specific entry in the Vendor Specific Controller State UUID Supported. list of the Supported Controller State Formats data structure. (yes, that period mid-sentence is in the original, we do not edit the queen's grammar πŸ’€)
  • sel β€” Select (SEL). this field specifies the type of management operation to perform. she's the one picking the genre 🌈
  • uidx β€” UUID Index (UIDX). if this is set to a non-zero value, then this value is the index of a UUID in the UUID List (refer to Figure 320) that's used by the command. figure 320. go look at figure 320. go πŸƒβ™€οΈ
  • csuidxp β€” Controller State UUID Index Parameter (CSUIDXP). and this field is vendor specific. meaning: not our business, ask your vendor, good luck bestie πŸ’€

okay real talk for a sec: a bunch of these fields are vendor specific (csuidxp) or change their meaning based on another field (mos depends on sel), and a few are only meaningful when non-zero (csuuidi, uidx). so don't just fill in zeros and assume everything's fine, the semantics shift on you. that's not me being dramatic, that's literally what the page says πŸ”₯

πŸŽ€ the sign-off πŸŽ€

this lil page comes from the libnvme API Manual, dated August 2026, and she's filed under libnvme(9). that's the source, the version, the date, the whole footer moment β€” folded up cute so you still get every bit of it πŸ’œ

now go forth and pass your arguments correctly, bestie. slay βœ¨πŸ’…πŸ¦‹

πŸ“¦ where this page comes from