libnvme(2)

πŸ’– libnvme(2) β€” the bestie edition πŸ’–

okay so you're reading the libnvme manual, section 2, and today's main character is enum nvme_id_nsfeat. it's giving "tiny enum, huge lore." let's go 🫢


✨ NAME ✨

enum nvme_id_nsfeat β€” this field defines features of the namespace. that's it, that's the whole vibe check. it's a little bag of flags that tell you what your namespace is capable of πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

enum nvme_id_nsfeat {
    NVME_NS_FEAT_THIN ,
    NVME_NS_FEAT_NATOMIC ,
    NVME_NS_FEAT_DULBE ,
    NVME_NS_FEAT_ID_REUSE ,
    NVME_NS_FEAT_IO_OPT

};

look at her. five constants, zero drama. πŸ’…


🌸 Constants 🌸

no cap, each one of these is a "if set" situation β€” meaning the bit gets flipped on in the namespace features field, and then the meaning kicks in. here's the whole roster:

  • NVME_NS_FEAT_THIN β€” if set, it means the namespace supports thin provisioning. specifically: the Namespace Capacity that got reported might be less than the Namespace Size. so like, you asked for a big closet and got a slightly smaller one, but it's fine, it's intentional πŸŽ€
  • NVME_NS_FEAT_NATOMIC β€” if set, then the fields NAWUN, NAWUPF, and NACWU are defined for this namespace, and the host should use those for this namespace instead of the AWUN, AWUPF, and ACWU fields over in the Identify Controller data structure. so basically: per-namespace atomicity numbers > controller-wide atomicity numbers. local girlboss energy πŸ’…
  • NVME_NS_FEAT_DULBE β€” if set, the controller supports the Deallocated or Unwritten Logical Block error for this namespace. yes she'll actually tell you when you read a block that was never written. iconique behavior, honestly πŸ™ˆ
  • NVME_NS_FEAT_ID_REUSE β€” if set, it means the value in the NGUID field for this namespace, if non-zero, is never reused by the controller β€” and the value in the EUI64 field for this namespace, if non-zero, is never reused by the controller either. two whole identities, both permanently one-of-a-kind. periodt. πŸ‘‘
  • NVME_NS_FEAT_IO_OPT β€” if set, the fields NPWG, NPWA, NPDG, NPDA, and NOWS are defined for this namespace and the host should use them for I/O optimization πŸ”₯ go faster, bestie.
⭐ lil reminder: every single one of these is an "if set" β€” the feature only means something when the bit is actually set. don't assume, check. iykyk ✨

and that's the page, bestie πŸ’œ this was libnvme(2), page enum nvme_id_nsfeat, dated July 2026 β€” mwah, go ship something πŸ©·πŸŽ€πŸŒΈ

πŸ“¦ where this page comes from