Pull button into test branch
[linux-drm-fsl-dcu.git] / arch / s390 / hypfs / inode.c
index 813fc21358f9764cc2ae6a34a17d5edcd60c265c..b6716c4b993400aa5e0236fa2189980349dc0df0 100644 (file)
@@ -109,7 +109,7 @@ static void hypfs_drop_inode(struct inode *inode)
 
 static int hypfs_open(struct inode *inode, struct file *filp)
 {
-       char *data = filp->f_dentry->d_inode->i_private;
+       char *data = filp->f_path.dentry->d_inode->i_private;
        struct hypfs_sb_info *fs_info;
 
        if (filp->f_mode & FMODE_WRITE) {
@@ -134,12 +134,20 @@ static int hypfs_open(struct inode *inode, struct file *filp)
        return 0;
 }
 
-static ssize_t hypfs_aio_read(struct kiocb *iocb, __user char *buf,
-                             size_t count, loff_t offset)
+static ssize_t hypfs_aio_read(struct kiocb *iocb, const struct iovec *iov,
+                             unsigned long nr_segs, loff_t offset)
 {
        char *data;
        size_t len;
        struct file *filp = iocb->ki_filp;
+       /* XXX: temporary */
+       char __user *buf = iov[0].iov_base;
+       size_t count = iov[0].iov_len;
+
+       if (nr_segs != 1) {
+               count = -EINVAL;
+               goto out;
+       }
 
        data = filp->private_data;
        len = strlen(data);
@@ -158,14 +166,15 @@ static ssize_t hypfs_aio_read(struct kiocb *iocb, __user char *buf,
 out:
        return count;
 }
-static ssize_t hypfs_aio_write(struct kiocb *iocb, const char __user *buf,
-                              size_t count, loff_t pos)
+static ssize_t hypfs_aio_write(struct kiocb *iocb, const struct iovec *iov,
+                             unsigned long nr_segs, loff_t offset)
 {
        int rc;
        struct super_block *sb;
        struct hypfs_sb_info *fs_info;
+       size_t count = iov_length(iov, nr_segs);
 
-       sb = iocb->ki_filp->f_dentry->d_inode->i_sb;
+       sb = iocb->ki_filp->f_path.dentry->d_inode->i_sb;
        fs_info = sb->s_fs_info;
        /*
         * Currently we only allow one update per second for two reasons: