libnvme(2)

โœจ NAME โœจ

bestieโ€ฆ it's enum nvme_lm_migration_send_fields โ€” the Migration Send command fields ๐Ÿ’… this is part of the libnvme API manual, and we're going through every single one of these little constants like it's a group chat catch-up ๐Ÿซถ


๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

ok so here's the whole enum, laid out exactly as it lives:

enum nvme_lm_migration_send_fields {
    NVME_LM_MIGRATION_SEND_MOS_SHIFT ,
    NVME_LM_MIGRATION_SEND_MOS_MASK ,
    NVME_LM_MIGRATION_SEND_SEL_SHIFT ,
    NVME_LM_MIGRATION_SEND_SEL_MASK ,
    NVME_LM_SEL_SUSPEND ,
    NVME_LM_SEL_RESUME ,
    NVME_LM_SEL_SET_CONTROLLER_STATE ,
    NVME_LM_MIGRATION_SEND_UIDX_SHIFT ,
    NVME_LM_MIGRATION_SEND_UIDX_MASK ,
    NVME_LM_DUDMQ ,
    NVME_LM_STYPE_SHIFT ,
    NVME_LM_STYPE_MASK ,
    NVME_LM_STYPE_SUSPEND_NOTIFICATION ,
    NVME_LM_STYPE_SUSPEND ,
    NVME_LM_SUSPEND_CNTLID_SHIFT ,
    NVME_LM_SUSPEND_CNTLID_MASK ,
    NVME_LM_RESUME_CNTLID_SHIFT ,
    NVME_LM_RESUME_CNTLID_MASK ,
    NVME_LM_SEQIND_SHIFT ,
    NVME_LM_SEQIND_MASK ,
    NVME_LM_SEQIND_NOT_FIRST_NOT_LAST ,
    NVME_LM_SEQIND_FIRST ,
    NVME_LM_SEQIND_LAST ,
    NVME_LM_SEQIND_ENTIRE ,
    NVME_LM_SET_CONTROLLER_STATE_CSUUIDI_SHIFT ,
    NVME_LM_SET_CONTROLLER_STATE_CSUUIDI_MASK ,
    NVME_LM_SET_CONTROLLER_STATE_CSVI_SHIFT ,
    NVME_LM_SET_CONTROLLER_STATE_CSVI_MASK ,
    NVME_LM_SET_CONTROLLER_STATE_CNTLID_SHIFT ,
    NVME_LM_SET_CONTROLLER_STATE_CNTLID_MASK

};

thirty constants. no skips. we're eating the whole plate ๐Ÿ“


๐Ÿ’– Constants ๐Ÿ’–

one bullet per icon, no cap:

  • NVME_LM_MIGRATION_SEND_MOS_SHIFT โ€” the shift you use to set the Management Operation Specific (MOS) field, periodt ๐ŸŒธ
  • NVME_LM_MIGRATION_SEND_MOS_MASK โ€” the mask for setting that MOS field ๐Ÿ’ซ
  • NVME_LM_MIGRATION_SEND_SEL_SHIFT โ€” how far you shift to set the Select (SEL) field ๐Ÿ‘‘
  • NVME_LM_MIGRATION_SEND_SEL_MASK โ€” the mask for setting SEL ๐ŸŽ€
  • NVME_LM_SEL_SUSPEND โ€” Migration Send - Suspend ๐Ÿ˜ด literally what it says
  • NVME_LM_SEL_RESUME โ€” Migration Send - Resume ๐ŸŒˆ back at it again
  • NVME_LM_SEL_SET_CONTROLLER_STATE โ€” Migration Send - Set Controller State ๐Ÿงš your main character moment for controller state
  • NVME_LM_MIGRATION_SEND_UIDX_SHIFT โ€” shift to set the UUID Index (UIDX) ๐Ÿ”ฅ
  • NVME_LM_MIGRATION_SEND_UIDX_MASK โ€” mask to set UIDX โœจ
  • NVME_LM_DUDMQ โ€” Delete User Data Migration Queue ๐Ÿ—‘๏ธ bye bestie
  • NVME_LM_STYPE_SHIFT โ€” the shift amount for setting Suspend Type (STYPE) ๐Ÿ’œ
  • NVME_LM_STYPE_MASK โ€” mask to set STYPE ๐ŸŽ€
  • NVME_LM_STYPE_SUSPEND_NOTIFICATION โ€” Suspend Notification: the specified controller is going to be suspended in the future with a subsequent Migration Send command ๐Ÿ”ฎ it's giving "heads up, not yet"
  • NVME_LM_STYPE_SUSPEND โ€” Suspend: suspend the controller ๐Ÿ˜ญ that's the whole thing
  • NVME_LM_SUSPEND_CNTLID_SHIFT โ€” shift amount to set Controller ID (CNTLID) when SEL is Suspend ๐Ÿ‘€
  • NVME_LM_SUSPEND_CNTLID_MASK โ€” mask to set CNTLID with SEL Suspend ๐Ÿซถ
  • NVME_LM_RESUME_CNTLID_SHIFT โ€” shift amount to set Controller ID (CNTLID) when SEL is Resume โœจ
  • NVME_LM_RESUME_CNTLID_MASK โ€” mask to set CNTLID when SEL is Resume ๐ŸŒŸ
  • NVME_LM_SEQIND_SHIFT โ€” shift amount to set the Sequence Indicator (SEQIND) field, relative to MOS ๐Ÿ’…
  • NVME_LM_SEQIND_MASK โ€” mask to set the SEQIND field relative to MOS ๐ŸŽ€
  • NVME_LM_SEQIND_NOT_FIRST_NOT_LAST โ€” this command is not the first or last of a sequence of two or more Migration Send commands with this management operation, used to transfer the controller state from host to controller ๐Ÿฅช the middle child fr fr
  • NVME_LM_SEQIND_FIRST โ€” this command is the first of a sequence of two or more Migration Send commands ๐Ÿ‘‘
  • NVME_LM_SEQIND_LAST โ€” this command is the last command of a sequence of two or more Migration Send commands ๐Ÿ
  • NVME_LM_SEQIND_ENTIRE โ€” this Migration Send command is the only command and contains the entire controller state for this management operation ๐ŸŒˆ the whole vibe in one packet
  • NVME_LM_SET_CONTROLLER_STATE_CSUUIDI_SHIFT โ€” shift amount to set the Controller State UUID Index (CSUUIDI) ๐Ÿ’–
  • NVME_LM_SET_CONTROLLER_STATE_CSUUIDI_MASK โ€” mask to set CSUUIDI โœจ
  • NVME_LM_SET_CONTROLLER_STATE_CSVI_SHIFT โ€” shift amount to set the Controller State Version Index (CSVI) ๐Ÿฆ‹
  • NVME_LM_SET_CONTROLLER_STATE_CSVI_MASK โ€” mask to set CSVI ๐Ÿ’œ
  • NVME_LM_SET_CONTROLLER_STATE_CNTLID_SHIFT โ€” shift amount to set Controller ID (CNTLID) when SEL is Set Controller State ๐ŸŒธ
  • NVME_LM_SET_CONTROLLER_STATE_CNTLID_MASK โ€” mask to set CNTLID when SEL is Set Controller State ๐Ÿซถ

ok real talk bestie: these are all just shift amounts and masks for wrangling the Migration Send command's fields. nothing dangerous in here, just bit-fiddling ๐Ÿ’…

and that's the whole page, bestie ๐ŸŽ€ this was the libnvme API manual, enum nvme_lm_migration_send_fields, from July 2026 โ€” slay, go write some NVMe code ๐Ÿ’–โœจ

๐Ÿ“ฆ where this page comes from