From: Dave Kleikamp <dave.kleikamp@oracle.com>
To: linux-kernel@vger.kernel.org
Cc: linux-fsdevel@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
"Maxim V. Patlasov" <mpatlasov@parallels.com>,
Zach Brown <zab@zabbo.net>, Christoph Hellwig <hch@infradead.org>,
Dave Kleikamp <dave.kleikamp@oracle.com>
Subject: [PATCH V9 10/33] iov_iter: let callers extract iovecs and bio_vecs
Date: Wed, 16 Oct 2013 09:04:23 -0500 [thread overview]
Message-ID: <1381932286-14978-11-git-send-email-dave.kleikamp@oracle.com> (raw)
In-Reply-To: <1381932286-14978-1-git-send-email-dave.kleikamp@oracle.com>
From: Zach Brown <zab@zabbo.net>
direct IO treats memory from user iovecs and memory from arrays of
kernel pages very differently. User memory is pinned and worked with in
batches while kernel pages are always pinned and don't require
additional processing.
Rather than try and provide an abstraction that includes these
different behaviours we let direct IO extract the memory structs and
hand them to the existing code.
Signed-off-by: Zach Brown <zab@zabbo.net>
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
---
include/linux/fs.h | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/include/linux/fs.h b/include/linux/fs.h
index fbe02cc..e717b47 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -372,6 +372,17 @@ static inline void iov_iter_init_bvec(struct iov_iter *i,
iov_iter_advance(i, written);
}
+
+static inline int iov_iter_has_bvec(struct iov_iter *i)
+{
+ return i->ops == &ii_bvec_ops;
+}
+
+static inline struct bio_vec *iov_iter_bvec(struct iov_iter *i)
+{
+ BUG_ON(!iov_iter_has_bvec(i));
+ return (struct bio_vec *)i->data;
+}
#endif
extern struct iov_iter_ops ii_iovec_ops;
@@ -389,8 +400,14 @@ static inline void iov_iter_init(struct iov_iter *i,
iov_iter_advance(i, written);
}
+static inline int iov_iter_has_iovec(struct iov_iter *i)
+{
+ return i->ops == &ii_iovec_ops;
+}
+
static inline struct iovec *iov_iter_iovec(struct iov_iter *i)
{
+ BUG_ON(!iov_iter_has_iovec(i));
return (struct iovec *)i->data;
}
--
1.8.4
next prev parent reply other threads:[~2013-10-16 14:05 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-16 14:04 [PATCH V9 00/33] loop: Issue O_DIRECT aio using bio_vec Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 01/33] iov_iter: move into its own file Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 02/33] iov_iter: iov_iter_copy_from_user() should use non-atomic copy Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 03/33] iov_iter: add copy_to_user support Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 04/33] iov_iter: add __iovec_copy_to_user() Dave Kleikamp
[not found] ` <1381932286-14978-1-git-send-email-dave.kleikamp-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2013-10-16 14:04 ` [PATCH V9 05/33] fuse: convert fuse to use iov_iter_copy_[to|from]_user Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 06/33] iov_iter: hide iovec details behind ops function pointers Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 07/33] iov_iter: ii_iovec_copy_to_user should pre-fault user pages Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 08/33] iov_iter: add bvec support Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 09/33] iov_iter: add a shorten call Dave Kleikamp
2013-10-16 14:04 ` Dave Kleikamp [this message]
2013-10-16 14:04 ` [PATCH V9 11/33] dio: Convert direct_IO to use iov_iter Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 12/33] dio: add bio_vec support to __blockdev_direct_IO() Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 13/33] fs: pull iov_iter use higher up the stack Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 14/33] aio: add aio_kernel_() interface Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 15/33] aio: add aio support for iov_iter arguments Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 16/33] bio: add bvec_length(), like iov_length() Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 17/33] loop: use aio to perform io on the underlying file Dave Kleikamp
2013-10-18 17:55 ` [PATCH V9.1 " Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 18/33] fs: create file_readable() and file_writable() functions Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 19/33] fs: use read_iter and write_iter rather than aio_read and aio_write Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 20/33] fs: add read_iter and write_iter to several file systems Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 21/33] ocfs2: add support for read_iter and write_iter Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 22/33] ext4: " Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 23/33] nfs: add support for read_iter, write_iter Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 24/33] nfs: simplify swap Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 25/33] btrfs: add support for read_iter and write_iter Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 26/33] block_dev: add support for read_iter, write_iter Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 27/33] xfs: add support for read_iter and write_iter Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 28/33] gfs2: Convert aio_read/write ops to read/write_iter Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 29/33] udf: convert file ops from aio_read/write " Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 30/33] afs: add support for read_iter and write_iter Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 31/33] ecrpytfs: Convert aio_read/write ops to read/write_iter Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 32/33] ubifs: convert file ops from aio_read/write " Dave Kleikamp
2013-10-16 14:04 ` [PATCH V9 33/33] tmpfs: add support for read_iter and write_iter Dave Kleikamp
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=1381932286-14978-11-git-send-email-dave.kleikamp@oracle.com \
--to=dave.kleikamp@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=hch@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mpatlasov@parallels.com \
--cc=zab@zabbo.net \
/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;
as well as URLs for NNTP newsgroup(s).