fuse: switch to ->read_iter/->write_iter
we just change the calling conventions here; more work to follow. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -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,
|
|||||||
if (!fc)
|
if (!fc)
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
|
|
||||||
fuse_copy_init(&cs, fc, 1, iov, nr_segs);
|
if (!iter_is_iovec(to))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
return fuse_dev_do_read(fc, file, &cs, iov_length(iov, nr_segs));
|
fuse_copy_init(&cs, fc, 1, to->iov, to->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,
|
|||||||
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;
|
||||||
|
|
||||||
return fuse_dev_do_write(fc, &cs, iov_length(iov, nr_segs));
|
fuse_copy_init(&cs, fc, 0, from->iov, from->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 = {
|
|||||||
.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,
|
||||||
|
Reference in New Issue
Block a user