Hi, Rather than repeat the same blurb again, see the v2 posting here: https://lore.kernel.org/linux-fsdevel/20230327180449.87382-1-axboe@xxxxxxxxx/ tldr - turn single segment iovecs into ITER_UBUF rather than ITER_IOVEC, because they are more efficient. Attempt 2 at doing the overlay. The series starts by adding an iter_iov() helper, which simply returns iter->iov. At the same time we rename it, to catch anyone using it and to further signify that future direct uses of it should be discouraged. There are a few manual bits left, I'll clean those up if we agree this is moving in the right direction. Then we get rid of returning an iovec copy with iov_iter_iovec(), and killing off that function. Two helpers are added to return the current segment address and length. Then the usual few iter_is_iovec() -> iter->user_backed changes. For the alsa part, Takashi did say that single segments could be valid. But with the rest of the changes, this is no longer interesting as we don't have to deal with it separately. Finally, do the last two patches that turn single iovec segments into ITER_UBUF at import time. Passes testing, and verified we do the right thing for 1 and multi segments. Also viewable here: https://git.kernel.dk/cgit/linux-block/log/?h=iter-ubuf.2 -- Jens Axboe