libnvme(2)

✨ NAME ✨

enum nvme_id_ctrl_anacap β€” bestie, this field is literally the whole vibe check on what a controller can actually do when it comes to Asymmetric Namespace Access Reporting πŸ’–


πŸ¦‹ 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

};

πŸ“ Constants πŸ“

okay so each one of these is a little flag bit, and every single one is "if set, then…" β€” so if it's set, the controller is giving that energy. no cap. πŸ‘‘

  • NVME_CTRL_ANACAP_OPT β€” if this one's set, the controller can report the ANA Optimized state. main character behaviour fr fr ✨
  • NVME_CTRL_ANACAP_NON_OPT β€” if set, the controller can report ANA Non-Optimized state. not every namespace is at its best and that's okay 🫢
  • NVME_CTRL_ANACAP_INACCESSIBLE β€” if set, the controller can report the ANA Inaccessible state. πŸ’€ yeah, sometimes the door is just closed.
  • NVME_CTRL_ANACAP_PERSISTENT_LOSS β€” if set, the controller can report ANA Persistent Loss state. it's giving permanent, not a phase 😭
  • NVME_CTRL_ANACAP_CHANGE β€” if set, the controller can report ANA Change state. plot twist incoming, stay tuned 🌸
  • NVME_CTRL_ANACAP_GRPID_NO_CHG β€” if this one is set, then the ANAGRPID field in the Identify Namespace data structure (struct nvme_id_ns.anagrpid) does not change while the namespace is attached to any controller. she's consistent, she's stable, we love that for her πŸ’…
  • 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 one, iconic πŸ‘‘

lowkey important: this is libnvme(2), part of the libnvme API manual. the source/version tag on this page is literally just enum nvme_id_ctrl_anacap, and it's dated July 2026 β€” so yeah, bestie, this one is from the future and she ate πŸŒˆπŸ§šπŸ’œ
πŸ“¦ where this page comes from