On Thu, Jun 20, 2024 at 02:54:09PM +0100, Matthew Wilcox wrote: > I'm against it. Block devices only do sector-aligned IO and we should > not pretend otherwise. While I agree with that, the bvec_iter is actually used in a few other places and could be used in more, and the 512-byte sector unit bi_sector is the only weird thing that's not useful elsewhere. So turning that into a u64 bi_addr; that is byte based where the meaning is specific to the user would actually be kinda nice. For traditional block users we'd need a bio_sector() helpers similar to the existing bio_sectors() one, but a lot of non-trivial drivers actually need to translated to a variable LBA-based addressing, which would be (a tiny little bit) simpler with the byte address. As bi_size is already in bytes it would also fit in pretty naturally with that. The only thing that is really off putting is the amount of churn that this would cause.