From: Dave Kleikamp <dave.kleikamp@oracle.com>
To: Zach Brown <zab@zabbo.net>
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
Dave Kleikamp <dave.kleikamp@oracle.com>
Subject: [PATCH V7 -next 10/33] iov_iter: let callers extract iovecs and bio_vecs
Date: Fri, 8 Mar 2013 16:52:05 -0600 [thread overview]
Message-ID: <1362783148-22736-11-git-send-email-dave.kleikamp@oracle.com> (raw)
In-Reply-To: <1362783148-22736-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: Dave Kleikamp <dave.kleikamp@oracle.com>
Cc: Zach Brown <zab@zabbo.net>
---
include/linux/fs.h | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/include/linux/fs.h b/include/linux/fs.h
index bd15cdb..53a1016 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -370,6 +370,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;
@@ -387,8 +398,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.1.5
next prev parent reply other threads:[~2013-03-08 22:52 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-08 22:51 [PATCH V7 -next 00/33] loop: Issue O_DIRECT aio using bio_vec Dave Kleikamp
2013-03-08 22:51 ` [PATCH V7 -next 01/33] iov_iter: move into its own file Dave Kleikamp
2013-03-08 22:51 ` [PATCH V7 -next 02/33] iov_iter: iov_iter_copy_from_user() should use non-atomic copy Dave Kleikamp
2013-03-08 22:51 ` [PATCH V7 -next 03/33] iov_iter: add copy_to_user support Dave Kleikamp
2013-03-08 22:51 ` [PATCH V7 -next 04/33] iov_iter: add __iovec_copy_to_user() Dave Kleikamp
[not found] ` <1362783148-22736-1-git-send-email-dave.kleikamp-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2013-03-08 22:52 ` [PATCH V7 -next 05/33] fuse: convert fuse to use iov_iter_copy_[to|from]_user Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 06/33] iov_iter: hide iovec details behind ops function pointers Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 07/33] iov_iter: ii_iovec_copy_to_user should pre-fault user pages Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 08/33] iov_iter: add bvec support Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 09/33] iov_iter: add a shorten call Dave Kleikamp
2013-03-08 22:52 ` Dave Kleikamp [this message]
2013-03-08 22:52 ` [PATCH V7 -next 11/33] dio: Convert direct_IO to use iov_iter Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 12/33] dio: add bio_vec support to __blockdev_direct_IO() Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 13/33] fs: pull iov_iter use higher up the stack Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 14/33] aio: add aio_kernel_() interface Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 15/33] aio: add aio support for iov_iter arguments Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 16/33] bio: add bvec_length(), like iov_length() Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 17/33] loop: use aio to perform io on the underlying file Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 18/33] fs: create file_readable() and file_writable() functions Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 19/33] fs: use read_iter and write_iter rather than aio_read and aio_write Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 20/33] fs: add read_iter and write_iter to several file systems Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 21/33] ocfs2: add support for read_iter, write_iter, and direct_IO_bvec Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 22/33] ext4: add support for read_iter and write_iter Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 23/33] nfs: add support for read_iter, write_iter Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 24/33] nfs: simplify swap Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 25/33] btrfs: add support for read_iter and write_iter Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 26/33] block_dev: add support for read_iter, write_iter Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 27/33] xfs: add support for read_iter and write_iter Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 28/33] gfs2: Convert aio_read/write ops to read/write_iter Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 29/33] udf: convert file ops from aio_read/write " Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 30/33] afs: add support for read_iter and write_iter Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 31/33] ecrpytfs: Convert aio_read/write ops to read/write_iter Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 32/33] ubifs: convert file ops from aio_read/write " Dave Kleikamp
2013-03-08 22:52 ` [PATCH V7 -next 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=1362783148-22736-11-git-send-email-dave.kleikamp@oracle.com \
--to=dave.kleikamp@oracle.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--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).