• Linus Torvalds's avatar
    Merge tag 'pull-work.iov_iter-base' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 5264406c
    Linus Torvalds authored
    Pull vfs iov_iter updates from Al Viro:
     "Part 1 - isolated cleanups and optimizations.
    
      One of the goals is to reduce the overhead of using ->read_iter() and
      ->write_iter() instead of ->read()/->write().
    
      new_sync_{read,write}() has a surprising amount of overhead, in
      particular inside iocb_flags(). That's the explanation for the
      beginning of the series is in this pile; it's not directly
      iov_iter-related, but it's a part of the same work..."
    
    * tag 'pull-work.iov_iter-base' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
      first_iovec_segment(): just return address
      iov_iter: massage calling conventions for first_{iovec,bvec}_segment()
      iov_iter: first_{iovec,bvec}_segment() - simplify a bit
      iov_iter: lift dealing with maxpages out of first_{iovec,bvec}_segment()
      iov_iter_get_pages{,_alloc}(): cap the maxsize with MAX_RW_COUNT
      iov_iter_bvec_advance(): don't bother with bvec_iter
      copy_page_{to,from}_iter(): switch iovec variants to generic
      keep iocb_flags() result cached in struct file
      iocb: delay evaluation of IS_SYNC(...) until we want to check IOCB_DSYNC
      struct file: use anonymous union member for rcuhead and llist
      btrfs: use IOMAP_DIO_NOSYNC
      teach iomap_dio_rw() to suppress dsync
      No need of likely/unlikely on calls of check_copy_size()
    5264406c
direct-io.c 19.2 KB