Wrapfs: handle maxbytes properly
authorErez Zadok <ezk@cs.sunysb.edu>
Fri, 12 Nov 2010 23:15:05 +0000 (18:15 -0500)
committerErez Zadok <ezk@cs.sunysb.edu>
Tue, 27 Dec 2016 03:11:30 +0000 (22:11 -0500)
Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu>
fs/wrapfs/inode.c

index d4476e821166b28f2b01c097e4d6aeddf3b94cb0..bd5d5ab57b18cf2afd393dd2b6a3fb8945b69073 100644 (file)
@@ -420,7 +420,6 @@ static int wrapfs_setattr(struct dentry *dentry, struct iattr *ia)
        struct dentry *lower_dentry;
        struct inode *inode;
        struct inode *lower_inode;
-       loff_t size;
        struct path lower_path;
 
        inode = dentry->d_inode;
@@ -450,14 +449,10 @@ static int wrapfs_setattr(struct dentry *dentry, struct iattr *ia)
         * the lower level.
         */
        if (ia->ia_valid & ATTR_SIZE) {
-               size = i_size_read(inode);
-               if (ia->ia_size < size ||
-                   (ia->ia_size > size &&
-                    inode->i_sb->s_maxbytes < lower_inode->i_sb->s_maxbytes)) {
-                       err = vmtruncate(inode, ia->ia_size);
-                       if (err)
-                               goto out;
-               }
+               err = inode_newsize_ok(inode, ia->ia_size);
+               if (err)
+                       goto out;
+               truncate_setsize(inode, ia->ia_size);
        }
 
        /* notify the (possibly copied-up) lower inode */