ext4: use old truncate_pagecache() interface for ext4 3.18 backport
Theodore Ts'o [Thu, 22 Jan 2015 17:26:16 +0000 (12:26 -0500)]
Signed-off-by: Theodore Ts'o <tytso@mit.edu>

fs/ext4/extents.c
fs/ext4/inode.c

index b5fcb1a..115c02f 100644 (file)
@@ -5392,6 +5392,7 @@ int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len)
        handle_t *handle;
        unsigned int credits;
        loff_t new_size, ioffset;
+       loff_t oldsize = i_size_read(inode);
        int ret;
 
        /* Collapse range works only on fs block size aligned offsets. */
@@ -5433,7 +5434,7 @@ int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len)
         * There is no need to overlap collapse range with EOF, in which case
         * it is effectively a truncate operation
         */
-       if (offset + len >= i_size_read(inode)) {
+       if (offset + len >= oldsize) {
                ret = -EINVAL;
                goto out_mutex;
        }
@@ -5444,7 +5445,7 @@ int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len)
                goto out_mutex;
        }
 
-       truncate_pagecache(inode, ioffset);
+       truncate_pagecache(inode, oldsize, ioffset);
 
        /* Wait for existing dio to complete */
        ext4_inode_block_unlocked_dio(inode);
index 8acdc69..60dac2e 100644 (file)
@@ -4513,6 +4513,7 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
 
        if (attr->ia_valid & ATTR_SIZE && attr->ia_size != inode->i_size) {
                handle_t *handle;
+               loff_t oldsize = i_size_read(inode);
 
                if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) {
                        struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
@@ -4583,7 +4584,7 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
                 * Truncate pagecache after we've waited for commit
                 * in data=journal mode to make pages freeable.
                 */
-                       truncate_pagecache(inode, inode->i_size);
+                       truncate_pagecache(inode, oldsize, inode->i_size);
        }
        /*
         * We want to call ext4_truncate() even if attr->ia_size ==