crc64_nvme(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ crc64_nvme β€” NAME πŸŽ€

ok so this page lives in the Kernel API Manual, section 9, and it's literally all about crc64_nvme β€” aka Calculate CRC64-NVME πŸ’–


✨ SYNOPSIS ✨

u64 crc64_nvme (u64 crc , const void *p , size_t len );

that's the whole vibe: you hand it a u64 seed, a pointer, and a length, and it hands you back a u64. no cap. 🫢


🌸 ARGUMENTS 🌸

  • crc β€” the seed value for the computation, bestie. drop a 0 in here for a brand-new CRC calculation, or pass the previous crc64 value if you're computing incrementally (aka doing it in little chunks, main character energy). πŸ”₯
  • p β€” pointer to the buffer that the CRC64 gets run over. it's giving "here's my data, do your thing" πŸ’…
  • len β€” the length of buffer p. gotta tell it how far to go, we're not mind readers 🧚

πŸ¦‹ DESCRIPTION πŸ¦‹

okay so this one computes the CRC64 that's defined in the NVME NVM Command Set Specification, and the important part β€” the part you cannot miss β€” is that it does this including the bitwise inversion at the beginning and end 😭✨

like, both ends. beginning AND end. it's not optional, it's built in, it's the whole point. so don't go inverting anything yourself afterward, the function already ate and left no crumbs πŸ‘‘


πŸ’œ SEE ALSO πŸ’œ

  • Kernel file ./include/linux/crc64.h β€” the header, the source of truth, the blueprint πŸ’–
  • crc64_be(9) β€” the other CRC64, its sibling, its costar 🌈

ngl if you're doing incremental CRC you better remember to feed the previous crc64 value back in as crc, otherwise the vibe check fails 🫣

⭐ that's a wrap, bestie! this iconic little page came to you from ./include/linux, dated October 2026, and yes it's crc64_nvme(9) β€” go forth and checksum responsibly πŸ’…πŸŽ€πŸŒΈ

πŸ“¦ where this page comes from