aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/attr.c5
-rw-r--r--fs/btrfs/inode.c8
-rw-r--r--fs/ext4/inode.c4
3 files changed, 10 insertions, 7 deletions
diff --git a/fs/attr.c b/fs/attr.c
index 267968d94673..5d4e59d56e85 100644
--- a/fs/attr.c
+++ b/fs/attr.c
@@ -202,11 +202,6 @@ int notify_change(struct dentry * dentry, struct iattr * attr, struct inode **de
202 return -EPERM; 202 return -EPERM;
203 } 203 }
204 204
205 if ((ia_valid & ATTR_SIZE) && IS_I_VERSION(inode)) {
206 if (attr->ia_size != inode->i_size)
207 inode_inc_iversion(inode);
208 }
209
210 if ((ia_valid & ATTR_MODE)) { 205 if ((ia_valid & ATTR_MODE)) {
211 umode_t amode = attr->ia_mode; 206 umode_t amode = attr->ia_mode;
212 /* Flag setting protected by i_mutex */ 207 /* Flag setting protected by i_mutex */
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index f1a77449d032..471a4f7f4044 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -4354,8 +4354,12 @@ static int btrfs_setsize(struct inode *inode, struct iattr *attr)
4354 * these flags set. For all other operations the VFS set these flags 4354 * these flags set. For all other operations the VFS set these flags
4355 * explicitly if it wants a timestamp update. 4355 * explicitly if it wants a timestamp update.
4356 */ 4356 */
4357 if (newsize != oldsize && (!(mask & (ATTR_CTIME | ATTR_MTIME)))) 4357 if (newsize != oldsize) {
4358 inode->i_ctime = inode->i_mtime = current_fs_time(inode->i_sb); 4358 inode_inc_iversion(inode);
4359 if (!(mask & (ATTR_CTIME | ATTR_MTIME)))
4360 inode->i_ctime = inode->i_mtime =
4361 current_fs_time(inode->i_sb);
4362 }
4359 4363
4360 if (newsize > oldsize) { 4364 if (newsize > oldsize) {
4361 truncate_pagecache(inode, newsize); 4365 truncate_pagecache(inode, newsize);
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 075763474118..7f0e15ebacd9 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -4598,6 +4598,10 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
4598 if (attr->ia_size > sbi->s_bitmap_maxbytes) 4598 if (attr->ia_size > sbi->s_bitmap_maxbytes)
4599 return -EFBIG; 4599 return -EFBIG;
4600 } 4600 }
4601
4602 if (IS_I_VERSION(inode) && attr->ia_size != inode->i_size)
4603 inode_inc_iversion(inode);
4604
4601 if (S_ISREG(inode->i_mode) && 4605 if (S_ISREG(inode->i_mode) &&
4602 (attr->ia_size < inode->i_size)) { 4606 (attr->ia_size < inode->i_size)) {
4603 if (ext4_should_order_data(inode)) { 4607 if (ext4_should_order_data(inode)) {