nvme_init_copy_range_f3(2)

πŸ’– nvme_init_copy_range_f3(2) πŸ’–

okay so bestie, welcome to the libnvme API manual, section 2, and today's main character is nvme_init_copy_range_f3 β€” a lil function that constructs a copy range f3 structure. yes, the f3 one. she's specific. she's iconic. let's get into it 🫢


✨ NAME ✨

nvme_init_copy_range_f3 β€” Constructs a copy range f3 structure

like literally that's her whole job. constructing. building. assembling the girlies into an array. no cap πŸ’…


🌸 SYNOPSIS 🌸

void nvme_init_copy_range_f3 (struct nvme_copy_range_f3 *copy , __u32
*snsids , __u16 *nlbs , __u64 *slbas , __u16 *sopts , __u64 *eilbrts ,
__u32 *elbatms , __u32 *elbats , __u16 nr );

she returns void, so don't go looking for a return value, there isn't one, it's giving mysterious and that's fine 😌✨


πŸ¦‹ ARGUMENTS πŸ¦‹

nine params, one function, zero regrets. here's the tea:

  • copy β€” Copy range array. this is the destination bestie, the structure that's about to get filled up πŸ’–
  • snsids β€” Source namespace identifier. which namespace the data's coming from, iykyk
  • nlbs β€” Number of logical blocks. how many blocks we're moving, count them, don't be sloppy
  • slbas β€” Starting LBA. the starting logical block address, where it all begins πŸŽ€
  • sopts β€” Source options. the options for the source, simple as
  • eilbrts β€” Expected initial logical block reference tag. long name, big energy, it's exactly what it says
  • elbatms β€” Expected logical block application tag mask. the mask version. mask, babes 🎭
  • elbats β€” Expected logical block application tag. same family, no mask, they're siblings your honor
  • nr β€” Number of descriptors to construct. how many of these bad boys we're building, lowkey the most important number here πŸ”₯
ngl bestie, every single one of these is a pointer except nr β€” so don't go passing plain values and then act surprised. the vibes must be pointers. periodt πŸ’€

🌈 A LIL VIBE CHECK 🌈

quick recap so it sticks:

  • it's void, so nothing comes back out πŸ™ˆ
  • copy is where the constructed ranges live
  • nr tells the loop how many descriptors to construct
  • everything else is the source data feeding into each descriptor

that's the whole function. no hidden lore. no extra chapters. she does one thing and she does it flawlessly ⭐


and that's a wrap, bestie! this little page beamed straight out of the libnvme API manual, nvme_init_copy_range_f3 edition, dated July 2026 β€” same name in the header, same name in the footer, nvme_init_copy_range_f3(2) top and bottom because symmetry is free and she's serving it πŸ’œπŸŽ€βœ¨

πŸ“¦ where this page comes from