libnvme(9)

πŸ“¦ version 3.2, in arch rolling

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

okay bestie, so this page is straight out of the libnvme API Manual and it's all about one little enum that spills the tea on what a controller can actually do with Asymmetric Namespace Access Reporting. iykyk ✨


🌸 NAME

enum nvme_id_ctrl_anacap β€” this field is literally the capability report for everything ANA (Asymmetric Namespace Access) Reporting. it tells you which states and group-ID tricks your controller is able to handle, no cap πŸ’…


πŸ¦‹ SYNOPSIS

enum nvme_id_ctrl_anacap {
    NVME_CTRL_ANACAP_OPT ,
    NVME_CTRL_ANACAP_NON_OPT ,
    NVME_CTRL_ANACAP_INACCESSIBLE ,
    NVME_CTRL_ANACAP_PERSISTENT_LOSS ,
    NVME_CTRL_ANACAP_CHANGE ,
    NVME_CTRL_ANACAP_GRPID_NO_CHG ,
    NVME_CTRL_ANACAP_GRPID_MGMT

};

like, that's the whole lineup bestie, seven constants, all iconic πŸ‘‘


πŸŽ€ Constants

okay so each one of these is a "if set, then…" situation. read them like a vibe check on the controller 🫢

  • NVME_CTRL_ANACAP_OPT β€” if this bit is set, the controller can report the ANA Optimized state. slay, it's thriving πŸ’–
  • NVME_CTRL_ANACAP_NON_OPT β€” if set, the controller is able to report the ANA Non-Optimized state. not its best day but it's honest πŸ™ˆ
  • NVME_CTRL_ANACAP_INACCESSIBLE β€” if set, the controller can report the ANA Inaccessible state. πŸ’€ it CAN tell you the namespace is unreachable, which is lowkey a flex
  • NVME_CTRL_ANACAP_PERSISTENT_LOSS β€” if set, the controller is able to report the ANA Persistent Loss state. 😭 yeah that's the sad one, but it reports it
  • NVME_CTRL_ANACAP_CHANGE β€” if set, the controller is able to report the ANA Change state. main character energy, always shifting ✨
  • NVME_CTRL_ANACAP_GRPID_NO_CHG β€” if set, then the ANAGRPID field inside the Identify Namespace data structure (struct nvme_id_ns.anagrpid) does not change while the namespace is attached to any controller. fr fr, stable group ID, we love consistency 🧚
  • NVME_CTRL_ANACAP_GRPID_MGMT β€” if set, then the controller supports a non-zero value in the ANAGRPID field of the Namespace Management command. so you can actually set it yourself, periodt πŸ’…
ngl the whole point of this enum is just: flip the bits, find out what your controller can do. every single one is an "if set" β€” no bits, no party πŸŽ‰

and that's the whole page bestie!! 🌈 this was enum nvme_id_ctrl_anacap from libnvme(9), dated October 2026 β€” mwah, go read the rest of the API manual, ily πŸ«ΆπŸ’œ

πŸ“¦ where this page comes from