orangefs: use new orangefs_inode_getattr to get size in write and llseek
authorMartin Brandenburg <martin@omnibond.com>
Tue, 15 Mar 2016 16:33:20 +0000 (12:33 -0400)
committerMike Marshall <hubcap@omnibond.com>
Wed, 23 Mar 2016 21:36:14 +0000 (17:36 -0400)
Signed-off-by: Martin Brandenburg <martin@omnibond.com>
Signed-off-by: Mike Marshall <hubcap@omnibond.com>
fs/orangefs/file.c

index 3aff671534d01d33cb91d772b62d8a808716c094..d4a00ad26f6e3526c3ddfb358083b1822bde19ba 100644 (file)
@@ -455,11 +455,12 @@ 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_old_getattr(file->f_mapping->host,
-                                        ORANGEFS_ATTR_SYS_SIZE, 0);
+               rc = orangefs_inode_getattr(file->f_mapping->host, 0, 1);
+               if (rc == -ESTALE)
+                       rc = -EIO;
                if (rc) {
-                       gossip_err("%s: orangefs_inode_old_getattr failed, rc:%zd:.\n",
-                                  __func__, rc);
+                       gossip_err("%s: orangefs_inode_getattr failed, "
+                           "rc:%zd:.\n", __func__, rc);
                        goto out;
                }
        }
@@ -670,8 +671,9 @@ 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_old_getattr(inode,
-                   ORANGEFS_ATTR_SYS_SIZE, 0);
+               ret = orangefs_inode_getattr(file->f_mapping->host, 0, 1);
+               if (ret == -ESTALE)
+                       ret = -EIO;
                if (ret) {
                        gossip_debug(GOSSIP_FILE_DEBUG,
                                     "%s:%s:%d calling make bad inode\n",