nvme_init_copy_range(2)

πŸ’– nvme_init_copy_range(2) πŸ’–

okay bestie, welcome to the libnvme API manual, section 2 ofc β€” this is where the kernel-adjacent girlies hang out. today's main character is nvme_init_copy_range, and she's here to build you a copy range structure. no cap, that's the whole job. πŸŽ€


✨ NAME ✨

nvme_init_copy_range β€” Constructs a copy range structure πŸ¦‹


🌸 SYNOPSIS 🌸

void nvme_init_copy_range (struct nvme_copy_range *copy , __u16 *nlbs ,
       __u64 *slbas , __u32 *eilbrts , __u32 *elbatms , __u32 *elbats , __u16
       nr );

like… look at her. seven whole parameters. she's doing the absolute most and we love that for her. πŸ’…


🫢 ARGUMENTS 🫢

okay so here's the tea on every single one of these, don't skip a single one, they ALL matter:

  • copy β€” Copy range array πŸ’–
  • nlbs β€” Number of logical blocks πŸ”₯
  • slbas β€” Starting LBA ⭐
  • eilbrts β€” Expected initial logical block reference tag 🌸
  • elbatms β€” Expected logical block application tag mask πŸŽ€
  • elbats β€” Expected logical block application tag πŸ¦‹
  • nr β€” Number of descriptors to construct πŸ‘‘

not me giving you all seven args and expecting you to just remember them 😭 bestie please double-check your nr matches your actual array length, iykyk.

and that's the whole page fr fr β€” no hidden sections, no secret flags, she said what she said. ✨

sending you off with love: this was nvme_init_copy_range from the libnvme API manual, page nvme_init_copy_range(2), dated July 2026. stay iconic, go construct those descriptors, and remember β€” copy ranges are temporary but good LBA hygiene is forever. πŸ’œπŸŒˆπŸ‘‘

nvme_init_copy_range Β· nvme_init_copy_range(2) Β· July 2026 πŸ’…

πŸ“¦ where this page comes from