libnvme(9)

πŸ“¦ version 3.2, in arch rolling

πŸ’– libnvme(9) β€” Namespace Management Host Software Specified Fields πŸ’–

okay bestie, welcome to libnvme(9), the API manual page you didn't know you needed but now literally can't live without. today's main character is a struct, and it's giving very structured energy. let's get into it 🫢


✨ NAME ✨

struct nvme_ns_mgmt_host_sw_specified β€” Namespace management Host Software Specified Fields.

like, the host software gets to specify stuff. that's the whole vibe. πŸ“‹


πŸ¦‹ SYNOPSIS πŸ¦‹

struct nvme_ns_mgmt_host_sw_specified {
    __le64 nsze;
    __le64 ncap;
    __u8 rsvd16[10];
    __u8 flbas;
    __u8 rsvd27[2];
    __u8 dps;
    __u8 nmic;
    __u8 rsvd31[61];
    __le32 anagrpid;
    __u8 rsvd96[4];
    __le16 nvmsetid;
    __le16 endgid;
    __u8 rsvd104[280];
    __le64 lbstm;
    __le16 nphndls;
    __u8 rsvd394[105];
    union {
      __u8 rsvd499[13];
      struct {
        __u8 znsco;
        __le32 rar;
        __le32 ror;
        __le32 rnumzrwa;
      } zns;
    };
    __le16 phndl[128];
    __u8 rsvd768[3328];
};

no cap, those rsvd arrays are thicc and yes, that last one is literally 3328. reserved fields ate and left no crumbs πŸ’€


🌸 Members 🌸

here's the whole cast, in order, no skips, no cuts ✨

  • nsze β€” Namespace Size. it tells you the total size of the namespace in logical blocks, and the number of logical blocks is based on the formatted LBA size. simple, iconic.
  • ncap β€” Namespace Capacity. the max number of logical blocks that may be allocated in the namespace at any point in time, bestie. and yes, the logical block count is based on the formatted LBA size. πŸ’…
  • rsvd16 β€” Reserved. it's reserved. moving on πŸŽ€
  • flbas β€” Formatted LBA Size, see enum nvme_id_ns_flbas. go check out the enum, it's got lore.
  • rsvd27 β€” Reserved πŸ™ˆ
  • dps β€” End-to-end Data Protection Type Settings, see enum nvme_id_ns_dps. protection information, but make it settings ✨
  • nmic β€” Namespace Multi-path I/O and Namespace Sharing Capabilities, see enum nvme_id_ns_nmic. multi-path AND sharing? multitasking queen πŸ‘‘
  • rsvd31 β€” Reserved πŸ’œ
  • anagrpid β€” ANA Group Identifier. it indicates the ANA Group Identifier of the ANA group of which the namespace is a member. yes the description says ANA Group Identifier for the ANA group, and honestly? it understood the assignment. πŸ”₯
  • rsvd96 β€” Reserved ⭐
  • nvmsetid β€” NVM Set Identifier. indicates the NVM Set with which this namespace is associated. we love a namespace that knows its set 🧚
  • endgid β€” Endurance Group Identifier. indicates the Endurance Group with which this namespace is associated. endurance? she perseveres 🌈
  • rsvd104 β€” Reserved 🌸
  • lbstm β€” Logical Block Storage Tag Mask. Identifies the mask for the Storage Tag field for the protection information. it's the mask for the tag, slay πŸŽ€
  • nphndls β€” Number of Placement Handles. specifies the number of Placement Handles included in the Placement Handle List. count them, bestie. all of them. πŸ¦‹
  • rsvd394 β€” Reserved πŸ’…
  • {unnamed_union} β€” anonymous. that's it, that's the whole description. the mystery, the intrigue, the unnamed union 🀫
  • rsvd499 β€” Reserved for I/O Command Sets that extend this specification. reserved WITH a reason, we stan documentation πŸ’–
  • zns β€” rsvd499 ( Zoned Namespace Command Set specific field ). the zoned namespace glow-up of that reserved space ✨
  • phndl β€” Placement Handle Associated RUH. this field specifies the Reclaim Unit Handle Identifier to be associated with the Placement Handle value. and heads up: if the Flexible Data Placement capability is not supported or not enabled in the specified Endurance Group, then the controller shall ignore this field. so like, the controller is gonna pretend it didn't see it πŸ«₯ (but keep the field in your struct anyway bestie)
  • rsvd768 β€” Reserved. final boss of the reserved fields πŸ’€

ok quick vibe check: the zns struct members znsco, rar, ror, and rnumzrwa show up in the SYNOPSIS up there β€” they're part of the struct definition, so keep them exactly as written, no renaming, no "fixing" πŸ’–

that's the whole page, no sections skipped, no fields left behind, every rsvd accounted for πŸŽ€

kisses, and happy struct-ing bestie πŸ’…

β€” πŸ¦‹ sign-off time: this was the struct nvme_ns_mgmt_host_sw_specified page from the API Manual, and it's dated October 2026 β€” the whole thing lives under libnvme(9), so iykyk 🌸

πŸ“¦ where this page comes from