Merge tag 'staging-4.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
[linux-2.6-microblaze.git] / fs / orangefs / file.c
index e6bbc80..28f38d8 100644 (file)
@@ -114,7 +114,6 @@ static ssize_t wait_for_direct_io(enum ORANGEFS_io_type type, struct inode *inod
        struct orangefs_inode_s *orangefs_inode = ORANGEFS_I(inode);
        struct orangefs_khandle *handle = &orangefs_inode->refn.khandle;
        struct orangefs_kernel_op_s *new_op = NULL;
-       struct iov_iter saved = *iter;
        int buffer_index = -1;
        ssize_t ret;
 
@@ -193,7 +192,7 @@ populate_shared_memory:
                orangefs_bufmap_put(buffer_index);
                buffer_index = -1;
                if (type == ORANGEFS_IO_WRITE)
-                       *iter = saved;
+                       iov_iter_revert(iter, total_size);
                gossip_debug(GOSSIP_FILE_DEBUG,
                             "%s:going to repopulate_shared_memory.\n",
                             __func__);
@@ -475,7 +474,8 @@ static ssize_t orangefs_file_write_iter(struct kiocb *iocb, struct iov_iter *ite
 
        /* Make sure generic_write_checks sees an up to date inode size. */
        if (file->f_flags & O_APPEND) {
-               rc = orangefs_inode_getattr(file->f_mapping->host, 0, 1);
+               rc = orangefs_inode_getattr(file->f_mapping->host, 0, 1,
+                   STATX_SIZE);
                if (rc == -ESTALE)
                        rc = -EIO;
                if (rc) {
@@ -693,7 +693,8 @@ static loff_t orangefs_file_llseek(struct file *file, loff_t offset, int origin)
                 * NOTE: We are only interested in file size here,
                 * so we set mask accordingly.
                 */
-               ret = orangefs_inode_getattr(file->f_mapping->host, 0, 1);
+               ret = orangefs_inode_getattr(file->f_mapping->host, 0, 1,
+                   STATX_SIZE);
                if (ret == -ESTALE)
                        ret = -EIO;
                if (ret) {