libnvme(9)

πŸ“¦ version 3.2, in arch rolling

πŸ’– libnvme(9) β€” the API Manual, but make it a group chat πŸ’–

okay so bestie, welcome to libnvme(9), the API manual ✨ and today's main character is one very specific struct. she's a little chunky, she's got a lot of __le32 energy, and honestly? she ate. let's get into it 🫢


✨ NAME ✨

struct nvme_nvm_id_ns β€” the NVME Command Set I/O Command Set Specific Identify Namespace Data Structure 🌸

like, that's her full government name. yes it's a mouthful. no we're not shortening it. periodt πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

here's the whole vibe, verbatim, no cap:

struct nvme_nvm_id_ns {
    __le64 lbstm;
    __u8 pic;
    __u8 pifa;
    __u8 rsvd10[2];
    __le32 elbaf[64];
    __le32 npdgl;
    __le32 nprg;
    __le32 npra;
    __le32 nors;
    __le32 npdal;
    __le32 lbapss;
    __le32 tlbaag;
    __u8 rsvd296[3800];
 };

not me counting the padding… there's rsvd10[2] early on and then rsvd296[3800] at the end, so she is mostly reserved space lowkey 😭 the real ones are hiding in there and that's the whole point of the struct. iykyk.


πŸŽ€ Members πŸŽ€

okay this is the actual tea β˜• every single field, in order, with her little one-liner. don't skip a single one, bestie, they all matter:

  • lbstm β€” Logical Block Storage Tag Mask ✨ (__le64, so she's the big one at the top, main character energy fr)
  • pic β€” Protection Information Capabilities πŸ’œ
  • pifa β€” Protection Information Format Attribute πŸŽ€
  • rsvd10 β€” Reserved πŸ™ˆ (__u8[2], like… she's just holding space, we love a generous queen)
  • elbaf β€” List of Extended LBA Format Support 🌈 and yes she's an array β€” __le32[64] β€” sixty-four of them, obsessed
  • npdgl β€” Namespace Preferred Deallocate Granularity Large πŸ”₯
  • nprg β€” Namespace Preferred Read Granularity ⭐
  • npra β€” Namespace Preferred Read Alignment πŸ¦‹
  • nors β€” Namespace Optimal Read Size 🌸
  • npdal β€” Namespace Preferred Deallocate Alignment Large πŸ‘‘
  • lbapss β€” LBA Format Placement Shard Size πŸ’–
  • tlbaag β€” Tracked LBA Allocation Granularity πŸ’…
  • rsvd296 β€” Reserved πŸ’€ (__u8[3800] β€” three thousand eight hundred bytes of pure "no thoughts head empty" and honestly? relatable)
ngl bestie, the two Reserved fields are just padding β€” they exist to keep the layout right, so don't go reading anything into them, okay? they're not hiding secrets, they're just vibing 🫢

and that's the whole page! no flags, no exit statuses, no environment variables β€” just one struct and her twelve fields, slaying in a fixed order 🌟

sign-off time 🧚 this little love letter to struct nvme_nvm_id_ns is from the libnvme(9) manual β€” the API Manual, dated October 2026 β€” and she's out πŸ’–βœ¨πŸŽ€πŸ¦‹ bye bestie, go interrogate some namespaces for me πŸ’œ

πŸ“¦ where this page comes from