[git pull] vfs.git iov_iter

From: Al Viro
Date: Thu Nov 16 2017 - 21:50:43 EST


* bio_{map,copy}_user_iov() series; those are cleanups - fixes from
the same pile went into mainline (and stable) in late September.
* fs/iomap.c iov_iter-related fixes
* new primitive - iov_iter_for_each_range(); apply a function to
kernel-mapped segments of an iov_iter. Usable for kvec and bvec ones,
the latter does kmap()/kunmap() around the callback. _Not_ usable for
iovec- or pipe-backed iov_iter; the latter is not hard to fix if the need
ever appears, the former is by design. Another related primitive will
have to wait for the next cycle - it passes page + offset + size instead
of pointer + size, and that one will be usable for everything _except_
kvec. Unfortunately, that one didn't get exposure in -next yet, so...
* a bit more lustre iov_iter work, including a use case for
iov_iter_for_each_range() (checksum calculation).
* vhost/scsi leak fix in failure exit.
* misc cleanups and detritectomy...

The following changes since commit 1cfd0ddd82232804e03f3023f6a58b50dfef0574:

bio_copy_user_iov(): don't ignore ->iov_offset (2017-10-10 23:55:14 -0400)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git work.iov_iter

for you to fetch changes up to cfe057f7db1ff026c8db75469a3f9ba9736e1975:

iomap_dio_actor(): fix iov_iter bugs (2017-10-11 22:38:02 -0400)

----------------------------------------------------------------
Al Viro (21):
bio_map_user_iov(): switch to iov_iter_get_pages()/iov_iter_advance()
... and with iov_iter_get_pages_alloc() it becomes even simpler
don't rely upon subsequent bio_add_pc_page() calls failing
bio_map_user_iov(): move alignment check into the main loop
bio_map_user_iov(): get rid of the iov_for_each()
blk_rq_map_user_iov(): move iov_iter_advance() down
move more stuff down into bio_copy_user_iov()
bio_copy_from_iter(): get rid of copying iov_iter
bio_map_user_iov(): get rid of copying iov_iter
bio_copy_user_iov(): saner bio size calculation
bio_alloc_map_data(): do bmd->iter setup right there
kill iov_shorten()
orangefs: remove detritus from struct orangefs_kiocb_s
xen: don't open-code iov_iter_kvec()
lnet_return_rx_credits_locked: don't abuse list_entry
new primitive: iov_iter_for_each_range()
fix a page leak in vhost_scsi_iov_to_sgl() error recovery
vhost/scsi: switch to iov_iter_get_pages()
lustre: switch struct ksock_conn to iov_iter
switch ksocknal_lib_recv_...() to use of iov_iter_for_each_range()
iomap_dio_actor(): fix iov_iter bugs

block/bio.c | 192 ++++++++-------------
block/blk-map.c | 7 -
.../staging/lustre/lnet/klnds/socklnd/socklnd.c | 4 +-
.../staging/lustre/lnet/klnds/socklnd/socklnd.h | 9 +-
.../staging/lustre/lnet/klnds/socklnd/socklnd_cb.c | 157 ++++-------------
.../lustre/lnet/klnds/socklnd/socklnd_lib.c | 99 +++--------
drivers/staging/lustre/lnet/lnet/lib-move.c | 2 +-
drivers/vhost/scsi.c | 73 +++-----
drivers/xen/pvcalls-back.c | 16 +-
fs/iomap.c | 24 ++-
fs/orangefs/orangefs-kernel.h | 6 -
fs/read_write.c | 21 ---
include/linux/bio.h | 4 +-
include/linux/uio.h | 6 +-
lib/iov_iter.c | 22 +++
15 files changed, 202 insertions(+), 440 deletions(-)