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
- ubuntu stonking: libnvme-dev 1.16.2-1build1 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms