libnvme(2)

πŸ’– libnvme(2) β€” API Manual πŸ’–

okay so bestie, you're in the libnvme manual, section 2 β€” the API pages, the deep lore. and today's main character is a struct that's lowkey about how your drive organises its garbage collection. no cap. πŸ¦‹


✨ NAME ✨

struct nvme_fdp_config_desc β€” FDP Configuration Descriptor

like, it's the descriptor that tells you how a Flexible Data Placement config is set up. it's giving "here's the map of the reclaim groups, bestie." πŸ—ΊοΈ


🌸 SYNOPSIS 🌸

struct nvme_fdp_config_desc {
    __le16 size;
    __u8 fdpa;
    __u8 vss;
    __le32 nrg;
    __le16 nruh;
    __le16 maxpids;
    __le32 nnss;
    __le64 runs;
    __le32 erutl;
    __u8 rsvd28[36];
    struct nvme_fdp_ruh_desc ruhs[];
};

look at her. she's structured. she's iconic. πŸ‘‘


πŸ’… Members πŸ’…

  • size β€” the descriptor size. how big she is. that's it, that's the girl. πŸ“
  • fdpa β€” FDP Attributes, and it's an enum nvme_fdp_config_fdpa, so you already know it's a little menu of vibes you pick from. ✨
  • vss β€” Vendor Specific Size. the space the vendor reserved to do vendor things. mysterious. we respect it. πŸ™ˆ
  • nrg β€” Number of Reclaim Groups. that's how many reclaim groups there are, fr fr. πŸŽ€
  • nruh β€” Number of Reclaim Unit Handles. yes, handles. plural. we love a girl with options. 🫢
  • maxpids β€” Max Placement Identifiers. the ceiling on placement IDs, and you should not try to exceed it. πŸ’€
  • nnss β€” Number of Namespaces Supported. how many namespaces this config can hold down at once. the capacity for friendship, honestly. 🌈
  • runs β€” Reclaim Unit Nominal Size. nominal size of a reclaim unit. literal queen of measurements. ⭐
  • erutl β€” Estimated Reclaim Unit Time Limit. estimated, bestie β€” estimated β€” so don't treat it like a promise. ⏳
  • rsvd28 β€” Reserved. hands off. do not touch. not yours. 🚫
  • ruhs β€” Reclaim Unit Handle descriptors, and they're struct nvme_fdp_ruh_desc. it's a flexible array member, so there are as many of these as the descriptor says there are. she goes on forever, lowkey. 🧚

heads up bestie: this whole struct is little-endian fields (__le16, __le32, __le64) β€” if you're reading these raw on a big-endian box you're gonna have a bad time. byte-swap before you trust a single number. πŸ’–

πŸ¦‹ SEE ALSO πŸ¦‹

there's genuinely no SEE ALSO section here, bestie. the original said nothing. i'm not gonna make something up. that would be lying and we don't lie in this house. 😭


okay that's the whole page, we ate and left no crumbs. πŸ’…

this was struct nvme_fdp_config_desc out of the libnvme API Manual, dated July 2026 β€” go forth and configure your FDP, bestie, and remember: reserved means reserved. πŸŽ€βœ¨πŸ«Ά

πŸ“¦ where this page comes from