On Wed, May 21, 2025 at 03:31:04PM -0700, Keith Busch wrote: > struct bio_vec { > - struct page *bv_page; > - unsigned int bv_len; > - unsigned int bv_offset; > + union { > + struct { > + struct page *bv_page; > + unsigned int bv_len; > + unsigned int bv_offset; > + }; > + struct { > + sector_t bv_sector; > + sector_t bv_sectors; > + }; > + }; Urrgg. Please don't overload the bio_vec. We've been working hard to generalize it and share the data structures with more users in the block layer. If having a bio for each source range is too much overhead for your user case (but I'd like to numbers for that), we'll need to find a way to do that without overloading the actual bio_vec structure.