diff options
author | Al Viro | 2016-09-22 22:33:12 +0200 |
---|---|---|
committer | Al Viro | 2016-10-06 00:23:36 +0200 |
commit | 241699cd72a8489c9446ae3910ddd243e9b9061b (patch) | |
tree | efcd8d62f5788ab843cd3457cf2e85f3be7b5296 /include/linux/fs.h | |
parent | fuse_dev_splice_read(): switch to add_to_pipe() (diff) | |
download | kernel-qcow2-linux-241699cd72a8489c9446ae3910ddd243e9b9061b.tar.gz kernel-qcow2-linux-241699cd72a8489c9446ae3910ddd243e9b9061b.tar.xz kernel-qcow2-linux-241699cd72a8489c9446ae3910ddd243e9b9061b.zip |
new iov_iter flavour: pipe-backed
iov_iter variant for passing data into pipe. copy_to_iter()
copies data into page(s) it has allocated and stuffs them into
the pipe; copy_page_to_iter() stuffs there a reference to the
page given to it. Both will try to coalesce if possible.
iov_iter_zero() is similar to copy_to_iter(); iov_iter_get_pages()
and friends will do as copy_to_iter() would have and return the
pages where the data would've been copied. iov_iter_advance()
will truncate everything past the spot it has advanced to.
New primitive: iov_iter_pipe(), used for initializing those.
pipe should be locked all along.
Running out of space acts as fault would for iovec-backed ones;
in other words, giving it to ->read_iter() may result in short
read if the pipe overflows, or -EFAULT if it happens with nothing
copied there.
In other words, ->read_iter() on those acts pretty much like
->splice_read(). Moreover, all generic_file_splice_read() users,
as well as many other ->splice_read() instances can be switched
to that scheme - that'll happen in the next commit.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include/linux/fs.h')
0 files changed, 0 insertions, 0 deletions