libnvme(9)

πŸ“¦ version 3.2, in arch rolling

πŸ’… libnvme(9) β€” the enum nvme_id_ctrl_oncs glow-up

okay bestie, so this page is from the libnvme API manual, and it's literally just one little enum that tells you which ✨optional✨ NVM commands and features your controller is out here supporting. it's giving "capability checklist but make it C". let's get into it 🫢


✨ NAME ✨

enum nvme_id_ctrl_oncs β€” this field indicates the optional NVM commands and features supported by the controller.

like, it's the controller's little resume of extra tricks it can do. no cap πŸ’–


πŸ¦‹ SYNOPSIS πŸ¦‹

enum nvme_id_ctrl_oncs {
    NVME_CTRL_ONCS_COMPARE ,
    NVME_CTRL_ONCS_WRITE_UNCORRECTABLE ,
    NVME_CTRL_ONCS_DSM ,
    NVME_CTRL_ONCS_WRITE_ZEROES ,
    NVME_CTRL_ONCS_SAVE_FEATURES ,
    NVME_CTRL_ONCS_RESERVATIONS ,
    NVME_CTRL_ONCS_TIMESTAMP ,
    NVME_CTRL_ONCS_VERIFY ,
    NVME_CTRL_ONCS_COPY ,
    NVME_CTRL_ONCS_COPY_SINGLE_ATOMICITY ,
    NVME_CTRL_ONCS_ALL_FAST_COPY ,
    NVME_CTRL_ONCS_WRITE_ZEROES_DEALLOCATE ,
    NVME_CTRL_ONCS_NAMESPACE_ZEROES

};

thirteen constants, zero skips, we love a complete roster πŸ‘‘


🌸 Constants 🌸

okay so every single one of these is a "if set, then…" situation. as in, if the bit is set, your controller has that feature. main character bit flags fr fr.

  • NVME_CTRL_ONCS_COMPARE β€” if set, then the controller supports the Compare command. it can compare things. icon behavior πŸ”₯
  • NVME_CTRL_ONCS_WRITE_UNCORRECTABLE β€” if set, then the controller supports the Write Uncorrectable command. yes the name sounds fake, it's real, move on πŸ’€
  • NVME_CTRL_ONCS_DSM β€” if set, then the controller supports the Dataset Management command.
  • NVME_CTRL_ONCS_WRITE_ZEROES β€” if set, then the controller supports the Write Zeroes command. zeroes, but make it a command ✨
  • NVME_CTRL_ONCS_SAVE_FEATURES β€” if set, then the controller supports the Save field set to a non-zero value in the Set Features command and the Select field set to a non-zero value in the Get Features command. both. it's an and situation, not an or situation πŸŽ€
  • NVME_CTRL_ONCS_RESERVATIONS β€” if set, then the controller supports reservations.
  • NVME_CTRL_ONCS_TIMESTAMP β€” if set, then the controller supports the Timestamp feature. it knows what time it is ⭐
  • NVME_CTRL_ONCS_VERIFY β€” if set, then the controller supports the Verify command.
  • NVME_CTRL_ONCS_COPY β€” if set, then the controller supports the copy command. (yes, lowercase "copy" in the original, we respect the source πŸ’…)
  • NVME_CTRL_ONCS_COPY_SINGLE_ATOMICITY β€” if set, then the write portion of a Copy command is performed as a single write command to which the same atomicity requirements that apply to a write command apply. so it's atomic in exactly the same way a write is atomic, no extra lore 🌈
  • NVME_CTRL_ONCS_ALL_FAST_COPY β€” if set, then all copy operations for the Copy command are fast copy operations. all of them. every single one. fast. πŸ¦‹
  • NVME_CTRL_ONCS_WRITE_ZEROES_DEALLOCATE β€” if MAXWZD bit set, then the maximum data size for Write Zeroes command depends on the value of the Deallocate bit in the Write Zeroes command and the value in the WZDSL field in the I/O Command Set specific Identify Controller data structure. yes that's a whole sentence, yes it matters, don't skip it πŸ™ˆ
  • NVME_CTRL_ONCS_NAMESPACE_ZEROES β€” if NSZS bit set, then the controller supports the Namespace Zeroes (NSZ) bit in the NVM Command Set Write Zeroes command.
ngl, notice how the last two are gated on their own bits (MAXWZD and NSZS) instead of the usual "if set" on the enum bit itself β€” that's literally what the page says, so don't come for me 😭

and that's the whole vibe check, bestie. thirteen flags, all accounted for, nothing dropped. slay πŸ’–

sign-off szn πŸŽ€ β€” this page is dated October 2026 and lives in libnvme(9), under the title enum nvme_id_ctrl_oncs. periodt. ✨

πŸ“¦ where this page comes from