libnvme(2)

πŸ’– libnvme(2) πŸ’–

okay bestie, this one is from the libnvme API manual, and we're talking about struct nvme_id_ns_granularity_list β€” the Namespace Granularity List. yes it's a mouthful, yes it's iconic, let's get into it ✨


🌸 NAME 🌸

struct nvme_id_ns_granularity_list β€” Namespace Granularity List. that's it, that's the whole name, she's giving exactly what she says on the tin πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

no cap, this is the full struct, character for character, so don't be out here editing it:

struct nvme_id_ns_granularity_list {
    __le32 attributes;
    __u8 num_descriptors;
    __u8 rsvd5[27];
    struct nvme_id_ns_granularity_desc entry[NVME_ID_ND_DESCRIPTOR_MAX];
    __u8 rsvd288[3808];
 };

πŸ¦‹ Members πŸ¦‹

the way each member has a job and every single one of them is doing it 🫢

  • attributes β€” Namespace Granularity Attributes. this is where the attribute bits live, bestie
  • num_descriptors β€” Number of Descriptors. literally just how many descriptors there are, she's self-explanatory and we love that for her
  • rsvd5 β€” reserved. do not touch, do not look at her, do not text her back πŸ™ˆ
  • entry β€” Namespace Granularity Descriptor. this is the array β€” <italic>entry</italic>[NVME_ID_ND_DESCRIPTOR_MAX], so she can hold up to NVME_ID_ND_DESCRIPTOR_MAX of them 🌈
  • rsvd288 β€” reserved. also reserved. also not for you. periodt πŸ’€
fr fr though: the rsvd5[27] and rsvd288[3808] fields are reserved β€” that means hands off, no writing, no reading, no sneaky little "just one byte" moment. reserved is reserved πŸ’–

okay that's the whole page, you ate it, no crumbs left. this was libnvme (the API manual, version vibes as of July 2026), and the struct on the cover was struct nvme_id_ns_granularity_list. go forth and be granular, my love πŸ‘‘πŸŽ€βœ¨

πŸ“¦ where this page comes from