fix ITER_PIPE interaction with direct_IO
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 10 Oct 2016 17:26:27 +0000 (13:26 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 10 Oct 2016 17:36:06 +0000 (13:36 -0400)
commitc3a690240423fc4eb8a0c3c7df025d13eadf140b
tree20f4a32910427c2aa4ccf8e33633d6e7194628bf
parenta949e63992469fed87aef197347960ced31701b8
fix ITER_PIPE interaction with direct_IO

by making sure we call iov_iter_advance() on original
iov_iter even if direct_IO (done on its copy) has returned 0.
It's a no-op for old iov_iter flavours and does the right thing
(== truncation of the stuff we'd allocated, but not filled) in
ITER_PIPE case.  Failures (e.g. -EIO) get caught and dealt with
by cleanup in generic_file_read_iter().

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/splice.c
fs/xfs/xfs_file.c
mm/filemap.c