nvme_init_copy_range_f2(2)

πŸ’– nvme_init_copy_range_f2(2) β€” the libnvme API manual, but make it make sense πŸ’–

okay bestie, sit DOWN because we're about to build a copy range f2 structure together and honestly? it's giving construction site but make it ✨ storage✨. this little function lives in the libnvme API manual (yes, page nvme_init_copy_range_f2(2), that's her full name) and she has one job: fill in your copy range array so you don't have to hand-fill every single field like a peasant. 🫢


🌸 NAME 🌸

nvme_init_copy_range_f2 β€” Constructs a copy range f2 structure

like, that's it, that's the whole vibe. she constructs. she initialises. she slays. πŸ’…


✨ SYNOPSIS ✨

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

no return value, friend β€” she's a void girlie, she works in the shadows, she edits copy in place and leaves. main character energy but make it humble. 😌


πŸŽ€ ARGUMENTS πŸŽ€

every single one of these is an array pointer btw (except nr, she's just a number, icon behaviour), so heads up β€” you're passing addresses of whole arrays, not vibes.

  • copy β€” Copy range array. this is the thing getting built. the canvas. the moment. πŸ–ΌοΈ
  • snsids β€” Source namespace identifier. which namespace are we copying from, bestie? this tells you.
  • nlbs β€” Number of logical blocks. how many blocks we're grabbing, one per descriptor.
  • slbas β€” Starting LBA. where in the source namespace we start reading, no cap.
  • sopts β€” Source options. little flag situation, per descriptor.
  • eilbrts β€” Expected initial logical block reference tag. yes it's a long name, yes it matters. πŸ”₯
  • elbatms β€” Expected logical block application tag mask. the mask, the gatekeeper, the filter. 🧚
  • elbats β€” Expected logical block application tag. and this is the tag itself getting checked against that mask.
  • nr β€” Number of descriptors to construct. how many times we loop this whole thing. every other array better be at least this long or we're in trouble, fr fr. πŸ’€

🌈 THE VIBE CHECK 🌈

you hand her a copy array plus a matching set of parallel arrays (snsids, nlbs, slbas, sopts, eilbrts, elbatms, elbats) and a count nr, and she constructs nr copy range f2 descriptors inside copy. that's the tea. β˜• none of the arguments are optional-looking, and there are nine of them, so count carefully on your fingers before you call her. πŸ“

pro tip from your favourite unix bestie: it's copy (the array) that gets written into β€” the rest are your inputs. don't get it twisted. πŸ™ˆ

kisses, babe β€” this page came to you from the libnvme API manual, dated July 2026, and it's filed under nvme_init_copy_range_f2. go construct something iconic. πŸ’œπŸ¦‹βœ¨

πŸ“¦ where this page comes from