Merge tag 'pull-work.iov_iter-base' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 3 Aug 2022 20:50:22 +0000 (13:50 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 3 Aug 2022 20:50:22 +0000 (13:50 -0700)
commit5264406cdb66c7003eb3edf53c9773b1b20611b9
treee94f76f64a0b3b45dcb9f9bec85cce2ba78e1221
parent200e340f2196d7fd427a5810d06e893b932f145a
parentdd45ab9dd28c82fc495d98cd9788666fd8d76b99
Merge tag 'pull-work.iov_iter-base' of git://git./linux/kernel/git/viro/vfs

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()
14 files changed:
block/fops.c
fs/aio.c
fs/btrfs/file.c
fs/btrfs/inode.c
fs/direct-io.c
fs/file_table.c
fs/iomap/direct-io.c
fs/open.c
fs/zonefs/super.c
include/linux/fs.h
include/linux/iomap.h
include/linux/uio.h
io_uring/rw.c
lib/iov_iter.c