libnvme(9)

πŸ“¦ version 3.2, in arch rolling

πŸ’– NAME πŸ’–

okay so bestie, welcome to nvme_id_ns_dpc β€” it's an enum, and honestly? it's the enum that tells you all about the capabilities for the end-to-end data protection feature. that's literally the whole vibe. end-to-end data protection ✨


🌸 SYNOPSIS 🌸

like, here's the whole shape of it, no cap:

enum nvme_id_ns_dpc {
    NVME_NS_DPC_PI_TYPE1 ,
    NVME_NS_DPC_PI_TYPE2 ,
    NVME_NS_DPC_PI_TYPE3 ,
    NVME_NS_DPC_PI_FIRST ,
    NVME_NS_DPC_PI_LAST

};

that's it. five constants. iconic. πŸ’…


πŸŽ€ Constants πŸŽ€

okay so these are the members, and each one is a little "if set" situation β€” meaning the bit gets set, and then the namespace is telling you something. main character energy honestly πŸ¦‹

  • NVME_NS_DPC_PI_TYPE1 β€” if set (yup, "if set"), it means the namespace supports Protection Information Type 1. slay. ✨
  • NVME_NS_DPC_PI_TYPE2 β€” if set, the namespace supports Protection Information Type 2. two for two, we love to see it πŸ’–
  • NVME_NS_DPC_PI_TYPE3 β€” if set, the namespace supports Protection Information Type 3. three icons, three types, periodt πŸ‘‘
  • NVME_NS_DPC_PI_FIRST β€” if set, it means the namespace supports protection information transferred as the first eight bytes of metadata. first! like a line leader πŸ“
  • NVME_NS_DPC_PI_LAST β€” if set, it means the namespace supports protection information transferred as the last eight bytes of metadata. saving the best for last fr fr 🌈
ngl, every single one of these is an if set condition β€” so don't read them as "always true", read them as "true when the bit says so". the more you know 🧚

🫢 little sign-off 🫢

this whole thing lives in the API Manual β€” like, that's the manual name, bestie β€” and it's page libnvme(9), dated October 2026, and the title of the page is literally just enum nvme_id_ns_dpc. go off, little enum. πŸ’œ

bye bestie, go protect some data end-to-end 😭πŸ”₯

πŸ“¦ where this page comes from