From: Milosz Tanski <milosz@adfin.com>
To: linux-kernel@vger.kernel.org
Cc: Christoph Hellwig <hch@infradead.org>,
linux-fsdevel@vger.kernel.org, linux-aio@kvack.org,
Mel Gorman <mgorman@suse.de>,
Volker Lendecke <Volker.Lendecke@sernet.de>,
Tejun Heo <tj@kernel.org>, Jeff Moyer <jmoyer@redhat.com>,
"Theodore Ts'o" <tytso@mit.edu>,
Al Viro <viro@zeniv.linux.org.uk>,
linux-api@vger.kernel.org,
Michael Kerrisk <mtk.manpages@gmail.com>,
linux-arch@vger.kernel.org, Dave Chinner <david@fromorbit.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: [PATCH] Add preadv2/pwritev2 documentation.
Date: Mon, 16 Mar 2015 14:32:26 -0400 [thread overview]
Message-ID: <1426530746-32222-1-git-send-email-milosz@adfin.com> (raw)
In-Reply-To: <cover.1426528417.git.milosz@adfin.com>
New syscalls that are a variation on the preadv/pwritev but support an extra
flag argument.
Signed-off-by: Milosz Tanski <milosz@adfin.com>
Suggested-by: Jeff Moyer <jmoyer@redhat.com>
Fixes: Jeff Moyer <jmoyer@redhat.com>
---
man2/readv.2 | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 file changed, 61 insertions(+), 10 deletions(-)
diff --git a/man2/readv.2 b/man2/readv.2
index 756a23f..83265c6 100644
--- a/man2/readv.2
+++ b/man2/readv.2
@@ -45,6 +45,12 @@ readv, writev, preadv, pwritev \- read or write data into multiple buffers
.sp
.BI "ssize_t pwritev(int " fd ", const struct iovec *" iov ", int " iovcnt ,
.BI " off_t " offset );
+.sp
+.BI "ssize_t preadv2(int " fd ", const struct iovec *" iov ", int " iovcnt ,
+.BI " off_t " offset ", int " flags );
+.sp
+.BI "ssize_t pwritev2(int " fd ", const struct iovec *" iov ", int " iovcnt ,
+.BI " off_t " offset ", int " flags );
.fi
.sp
.in -4n
@@ -162,9 +168,9 @@ The
system call combines the functionality of
.BR writev ()
and
-.BR pwrite (2).
+.BR pwrite (2) "."
It performs the same task as
-.BR writev (),
+.BR writev () ","
but adds a fourth argument,
.IR offset ,
which specifies the file offset at which the output operation
@@ -174,15 +180,41 @@ The file offset is not changed by these system calls.
The file referred to by
.I fd
must be capable of seeking.
+.SS preadv2() and pwritev2()
+
+This pair of system calls has similar functionality to the
+.BR preadv ()
+and
+.BR pwritev ()
+calls, but adds a fifth argument, \fIflags\fP, which modifies the behavior on a per call basis.
+
+Like the
+.BR preadv ()
+and
+.BR pwritev ()
+calls, they accept an \fIoffset\fP argument. Unlike those calls, if the \fIoffset\fP argument is set to -1 then the current file offset is used and updated.
+
+The \fIflags\fP arguments to
+.BR preadv2 ()
+and
+.BR pwritev2 ()
+contains a bitwise OR of one or more of the following flags:
+.TP
+.BR RWF_NONBLOCK " (only " preadv2() " since Linux 3.19)"
+Performs a non-blocking operation for regular files (not sockets) opened in buffered mode (not
+.BR O_DIRECT ")."
+
.SH RETURN VALUE
On success,
-.BR readv ()
-and
+.BR readv () ","
.BR preadv ()
-return the number of bytes read;
-.BR writev ()
and
+.BR preadv2 ()
+return the number of bytes read;
+.BR writev () ","
.BR pwritev ()
+and
+.BR pwritev2 ()
return the number of bytes written.
On error, \-1 is returned, and \fIerrno\fP is set appropriately.
.SH ERRORS
@@ -191,12 +223,22 @@ The errors are as given for
and
.BR write (2).
Furthermore,
-.BR preadv ()
-and
+.BR preadv () ","
+.BR preadv2 () ","
.BR pwritev ()
+and
+.BR pwritev2 ()
can also fail for the same reasons as
.BR lseek (2).
-Additionally, the following error is defined:
+Additionally, the following errors are defined:
+.TP
+.B EAGAIN
+The operation would block. This is possible if the file descriptor \fIfd\fP refers to a socket and has been marked nonblocking
+.RB ( O_NONBLOCK ),
+or the operation is a
+.BR preadv2
+and the \fIflags\fP argument is set to
+.BR RWF_NONBLOCK.
.TP
.B EINVAL
The sum of the
@@ -207,12 +249,17 @@ value.
.TP
.B EINVAL
The vector count \fIiovcnt\fP is less than zero or greater than the
-permitted maximum.
+permitted maximum. Or, an unknown flag is specified in \fIflags\fP.
.SH VERSIONS
.BR preadv ()
and
.BR pwritev ()
first appeared in Linux 2.6.30; library support was added in glibc 2.10.
+.sp
+.BR preadv2 ()
+and
+.BR pwritev2 ()
+first appeared in Linux 4.1
.SH CONFORMING TO
.BR readv (),
.BR writev ():
@@ -225,6 +272,10 @@ first appeared in Linux 2.6.30; library support was added in glibc 2.10.
.BR preadv (),
.BR pwritev ():
nonstandard, but present also on the modern BSDs.
+.sp
+.BR preadv2 (),
+.BR pwritev2 ():
+nonstandard, Linux extension.
.SH NOTES
POSIX.1-2001 allows an implementation to place a limit on
the number of items that can be passed in
--
1.9.1
next prev parent reply other threads:[~2015-03-16 18:32 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-16 18:27 [PATCH v7 0/5] vfs: Non-blockling buffered fs read (page cache only) Milosz Tanski
2015-03-16 18:27 ` [PATCH v7 1/5] vfs: Prepare for adding a new preadv/pwritev with user flags Milosz Tanski
2015-03-16 21:05 ` Andreas Dilger
2015-03-16 18:27 ` [PATCH v7 2/5] vfs: Define new syscalls preadv2,pwritev2 Milosz Tanski
2015-03-16 18:27 ` [PATCH v7 3/5] x86: wire up preadv2 and pwritev2 Milosz Tanski
2015-03-16 18:27 ` [PATCH v7 4/5] vfs: RWF_NONBLOCK flag for preadv2 Milosz Tanski
2015-03-16 18:27 ` [PATCH v7 5/5] xfs: add RWF_NONBLOCK support Milosz Tanski
2015-03-16 22:04 ` Dave Chinner
2015-03-16 18:32 ` Milosz Tanski [this message]
2015-03-27 16:49 ` [PATCH] Add preadv2/pwritev2 documentation Andrew Morton
2015-03-30 7:33 ` Christoph Hellwig
2015-03-16 18:34 ` [PATCH] fstests: generic test for preadv2 behavior on linux Milosz Tanski
2015-03-16 21:07 ` Andreas Dilger
2015-03-16 22:03 ` Milosz Tanski
2015-03-16 22:02 ` Dave Chinner
2015-03-16 22:11 ` Milosz Tanski
2015-03-16 22:56 ` Dave Chinner
2015-03-26 11:55 ` [PATCH v7 0/5] vfs: Non-blockling buffered fs read (page cache only) Christoph Hellwig
2015-03-26 19:12 ` Milosz Tanski
2015-03-27 2:29 ` Milosz Tanski
2015-03-27 3:28 ` Andrew Morton
2015-03-27 5:41 ` Volker Lendecke
2015-03-27 6:08 ` Andrew Morton
2015-03-27 8:02 ` Volker Lendecke
2015-03-27 8:12 ` Christoph Hellwig
2015-03-27 8:18 ` Christoph Hellwig
2015-03-27 8:35 ` Andrew Morton
2015-03-27 8:48 ` Christoph Hellwig
2015-03-27 9:01 ` Andrew Morton
2015-03-27 9:44 ` Volker Lendecke
2015-03-27 15:58 ` Jeremy Allison
2015-03-27 16:30 ` Andrew Morton
2015-03-27 16:39 ` Jeremy Allison
2015-03-27 16:39 ` Andrew Morton
2015-03-27 16:45 ` Milosz Tanski
2015-03-31 1:27 ` Milosz Tanski
2015-03-27 16:38 ` Milosz Tanski
2015-03-30 7:36 ` Christoph Hellwig
2015-03-30 17:19 ` Jeremy Allison
2015-03-30 22:51 ` Milosz Tanski
2015-03-30 20:26 ` Andrew Morton
2015-03-30 20:32 ` Jeremy Allison
2015-03-30 20:37 ` Andrew Morton
2015-03-30 20:49 ` Jeremy Allison
2015-03-30 21:33 ` Andrew Morton
2015-03-30 22:35 ` Milosz Tanski
2015-03-30 22:49 ` Milosz Tanski
2015-03-30 22:57 ` Andrew Morton
2015-03-30 23:06 ` Milosz Tanski
2015-03-30 23:25 ` Milosz Tanski
2015-04-04 3:42 ` Andrew Morton
2015-04-06 3:53 ` Milosz Tanski
2015-03-30 23:09 ` Milosz Tanski
2015-03-27 15:21 ` Milosz Tanski
2015-03-27 17:04 ` Andrew Morton
2015-03-30 7:40 ` Christoph Hellwig
2015-03-30 18:54 ` Andrew Morton
2015-03-30 22:40 ` Milosz Tanski
2015-03-30 22:50 ` Andrew Morton
-- strict thread matches above, loose matches on Subject: below --
2014-10-21 20:46 [PATCH 0/4] " Milosz Tanski
2014-10-21 20:59 ` [PATCH] Add preadv2/pwritev2 documentation Milosz Tanski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1426530746-32222-1-git-send-email-milosz@adfin.com \
--to=milosz@adfin.com \
--cc=Volker.Lendecke@sernet.de \
--cc=akpm@linux-foundation.org \
--cc=david@fromorbit.com \
--cc=hch@infradead.org \
--cc=jmoyer@redhat.com \
--cc=linux-aio@kvack.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mtk.manpages@gmail.com \
--cc=tj@kernel.org \
--cc=tytso@mit.edu \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®