提交 fbdbacca 编写于 作者: A Al Viro

fuse: switch to ->read_iter/->write_iter

we just change the calling conventions here; more work to follow.
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
上级 cd28e28d
...@@ -1363,8 +1363,7 @@ static int fuse_dev_open(struct inode *inode, struct file *file) ...@@ -1363,8 +1363,7 @@ static int fuse_dev_open(struct inode *inode, struct file *file)
return 0; return 0;
} }
static ssize_t fuse_dev_read(struct kiocb *iocb, const struct iovec *iov, static ssize_t fuse_dev_read(struct kiocb *iocb, struct iov_iter *to)
unsigned long nr_segs, loff_t pos)
{ {
struct fuse_copy_state cs; struct fuse_copy_state cs;
struct file *file = iocb->ki_filp; struct file *file = iocb->ki_filp;
...@@ -1372,9 +1371,12 @@ static ssize_t fuse_dev_read(struct kiocb *iocb, const struct iovec *iov, ...@@ -1372,9 +1371,12 @@ static ssize_t fuse_dev_read(struct kiocb *iocb, const struct iovec *iov,
if (!fc) if (!fc)
return -EPERM; return -EPERM;
fuse_copy_init(&cs, fc, 1, iov, nr_segs); if (!iter_is_iovec(to))
return -EINVAL;
fuse_copy_init(&cs, fc, 1, to->iov, to->nr_segs);
return fuse_dev_do_read(fc, file, &cs, iov_length(iov, nr_segs)); return fuse_dev_do_read(fc, file, &cs, iov_iter_count(to));
} }
static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos, static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos,
...@@ -1970,17 +1972,19 @@ static ssize_t fuse_dev_do_write(struct fuse_conn *fc, ...@@ -1970,17 +1972,19 @@ static ssize_t fuse_dev_do_write(struct fuse_conn *fc,
return err; return err;
} }
static ssize_t fuse_dev_write(struct kiocb *iocb, const struct iovec *iov, static ssize_t fuse_dev_write(struct kiocb *iocb, struct iov_iter *from)
unsigned long nr_segs, loff_t pos)
{ {
struct fuse_copy_state cs; struct fuse_copy_state cs;
struct fuse_conn *fc = fuse_get_conn(iocb->ki_filp); struct fuse_conn *fc = fuse_get_conn(iocb->ki_filp);
if (!fc) if (!fc)
return -EPERM; return -EPERM;
fuse_copy_init(&cs, fc, 0, iov, nr_segs); if (!iter_is_iovec(from))
return -EINVAL;
fuse_copy_init(&cs, fc, 0, from->iov, from->nr_segs);
return fuse_dev_do_write(fc, &cs, iov_length(iov, nr_segs)); return fuse_dev_do_write(fc, &cs, iov_iter_count(from));
} }
static ssize_t fuse_dev_splice_write(struct pipe_inode_info *pipe, static ssize_t fuse_dev_splice_write(struct pipe_inode_info *pipe,
...@@ -2232,11 +2236,9 @@ const struct file_operations fuse_dev_operations = { ...@@ -2232,11 +2236,9 @@ const struct file_operations fuse_dev_operations = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.open = fuse_dev_open, .open = fuse_dev_open,
.llseek = no_llseek, .llseek = no_llseek,
.read = do_sync_read, .read_iter = fuse_dev_read,
.aio_read = fuse_dev_read,
.splice_read = fuse_dev_splice_read, .splice_read = fuse_dev_splice_read,
.write = do_sync_write, .write_iter = fuse_dev_write,
.aio_write = fuse_dev_write,
.splice_write = fuse_dev_splice_write, .splice_write = fuse_dev_splice_write,
.poll = fuse_dev_poll, .poll = fuse_dev_poll,
.release = fuse_dev_release, .release = fuse_dev_release,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册