]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - fs/fuse/cuse.c
Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa...
[karo-tx-linux.git] / fs / fuse / cuse.c
index 28d0c7abba1c2fa7748d3b1c2874b855427b3897..e5bbf748b6987a922fa211e3edb083346927f3b6 100644 (file)
@@ -38,7 +38,6 @@
 #include <linux/device.h>
 #include <linux/file.h>
 #include <linux/fs.h>
-#include <linux/aio.h>
 #include <linux/kdev_t.h>
 #include <linux/kthread.h>
 #include <linux/list.h>
@@ -48,6 +47,7 @@
 #include <linux/slab.h>
 #include <linux/stat.h>
 #include <linux/module.h>
+#include <linux/uio.h>
 
 #include "fuse_i.h"
 
@@ -88,32 +88,23 @@ static struct list_head *cuse_conntbl_head(dev_t devt)
  * FUSE file.
  */
 
-static ssize_t cuse_read(struct file *file, char __user *buf, size_t count,
-                        loff_t *ppos)
+static ssize_t cuse_read_iter(struct kiocb *kiocb, struct iov_iter *to)
 {
+       struct fuse_io_priv io = { .async = 0, .file = kiocb->ki_filp };
        loff_t pos = 0;
-       struct iovec iov = { .iov_base = buf, .iov_len = count };
-       struct fuse_io_priv io = { .async = 0, .file = file };
-       struct iov_iter ii;
-       iov_iter_init(&ii, READ, &iov, 1, count);
 
-       return fuse_direct_io(&io, &ii, &pos, FUSE_DIO_CUSE);
+       return fuse_direct_io(&io, to, &pos, FUSE_DIO_CUSE);
 }
 
-static ssize_t cuse_write(struct file *file, const char __user *buf,
-                         size_t count, loff_t *ppos)
+static ssize_t cuse_write_iter(struct kiocb *kiocb, struct iov_iter *from)
 {
+       struct fuse_io_priv io = { .async = 0, .file = kiocb->ki_filp };
        loff_t pos = 0;
-       struct iovec iov = { .iov_base = (void __user *)buf, .iov_len = count };
-       struct fuse_io_priv io = { .async = 0, .file = file };
-       struct iov_iter ii;
-       iov_iter_init(&ii, WRITE, &iov, 1, count);
-
        /*
         * No locking or generic_write_checks(), the server is
         * responsible for locking and sanity checks.
         */
-       return fuse_direct_io(&io, &ii, &pos,
+       return fuse_direct_io(&io, from, &pos,
                              FUSE_DIO_WRITE | FUSE_DIO_CUSE);
 }
 
@@ -186,8 +177,8 @@ static long cuse_file_compat_ioctl(struct file *file, unsigned int cmd,
 
 static const struct file_operations cuse_frontend_fops = {
        .owner                  = THIS_MODULE,
-       .read                   = cuse_read,
-       .write                  = cuse_write,
+       .read_iter              = cuse_read_iter,
+       .write_iter             = cuse_write_iter,
        .open                   = cuse_open,
        .release                = cuse_release,
        .unlocked_ioctl         = cuse_file_ioctl,