Hi, We've been doing a few conversions of ITER_IOVEC to ITER_UBUF in select spots, as the latter is cheaper to iterate and hence saves some cycles. I recently experimented [1] with io_uring converting single segment READV and WRITEV into non-vectored variants, as we can save some cycles through that as well. But there's really no reason why we can't just do this further down, enabling it for everyone. It's quite common to use vectored reads or writes even with a single segment, unfortunately, even for cases where there's no specific reason to do so. From a bit of non-scientific testing on a vm on my laptop, I see about 60% of the import_iovec() calls being for a single segment. Ran some unscientific performanc tests [2] as well. Changes since v1: - Add two prep patches converting ITER_IOVEC assumptions - Add missing import_ubuf() return value check in __import_iovec_ubuf() [1] https://lore.kernel.org/io-uring/43cb1fb7-b30b-8df1-bba6-e50797d680c6@xxxxxxxxx/ [2] https://lore.kernel.org/all/45c46ee9-8479-4114-6ce9-ae3082335cb8@xxxxxxxxx/