On Sun, May 22, 2022 at 06:39:39AM -0600, Jens Axboe wrote: > On 5/22/22 5:45 AM, Christoph Hellwig wrote: > > On Sun, May 22, 2022 at 12:15:59PM +0100, Matthew Wilcox wrote: > >>> Direct kernel pointer, surely? And from a quick look, > >>> iov_iter_is_kaddr() checks for the wrong value... > >> > >> Indeed. I didn't test it; it was a quick patch to see if the idea was > >> worth pursuing. Neither you nor Christoph thought so at the time, so > >> I dropped it. if there are performance improvements to be had from > >> doing something like that, it's a more compelling idea than just "Hey, > >> this removes a few lines of code and a bit of stack space from every > >> caller". > > > > Oh, right I actually misremembered what the series did. But something > > similar except for user pointers might help with the performance issues > > that Jens sees, and if it does it might be worth it to avoid having > > both the legacy read/write path and the iter path in various drivers. > > Right, ITER_UADDR or something would useful. I'll try and test that, > should be easy to wire up. Careful - it's not just iov_iter_advance() and __iterate_and_advance() (that one should use the same "callback" argument as iovec case). /dev/random is not the only thing we use read(2) and write(2) on... I can cook a patch doing that, just let me get some caffeine into the bloodstream first...