@torvalds Yep, we certainly could do that. I did that in io_uring, I'd be weary of doing it generically without auditing all the callers. Some callers assume you'll get an ITER_IOVEC out of those helpers, would make me nervous to do it wholesale inside the functions.
For liburing specifically, I'd want to add a patch that just turns io_uring_prep_{readv,writev} into read/write instead. Because the iovec copy overhead is noticeable too, and the ITER_UBUF conversion only saves iterator overhead.