aboutsummaryrefslogtreecommitdiffstats
path: root/fs/9p/vfs_inode_dotl.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/9p/vfs_inode_dotl.c')
-rw-r--r--fs/9p/vfs_inode_dotl.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c
index 327c578c7ba6..0a0ac30d51d6 100644
--- a/fs/9p/vfs_inode_dotl.c
+++ b/fs/9p/vfs_inode_dotl.c
@@ -456,12 +456,6 @@ int v9fs_vfs_setattr_dotl(struct dentry *dentry, struct iattr *iattr)
456 if (IS_ERR(fid)) 456 if (IS_ERR(fid))
457 return PTR_ERR(fid); 457 return PTR_ERR(fid);
458 458
459 if ((iattr->ia_valid & ATTR_SIZE) &&
460 iattr->ia_size != i_size_read(dentry->d_inode)) {
461 retval = vmtruncate(dentry->d_inode, iattr->ia_size);
462 if (retval)
463 return retval;
464 }
465 /* Write all dirty data */ 459 /* Write all dirty data */
466 if (S_ISREG(dentry->d_inode->i_mode)) 460 if (S_ISREG(dentry->d_inode->i_mode))
467 filemap_write_and_wait(dentry->d_inode->i_mapping); 461 filemap_write_and_wait(dentry->d_inode->i_mapping);
@@ -469,8 +463,12 @@ int v9fs_vfs_setattr_dotl(struct dentry *dentry, struct iattr *iattr)
469 retval = p9_client_setattr(fid, &p9attr); 463 retval = p9_client_setattr(fid, &p9attr);
470 if (retval < 0) 464 if (retval < 0)
471 return retval; 465 return retval;
472 v9fs_invalidate_inode_attr(dentry->d_inode);
473 466
467 if ((iattr->ia_valid & ATTR_SIZE) &&
468 iattr->ia_size != i_size_read(dentry->d_inode))
469 truncate_setsize(dentry->d_inode, iattr->ia_size);
470
471 v9fs_invalidate_inode_attr(dentry->d_inode);
474 setattr_copy(dentry->d_inode, iattr); 472 setattr_copy(dentry->d_inode, iattr);
475 mark_inode_dirty(dentry->d_inode); 473 mark_inode_dirty(dentry->d_inode);
476 if (iattr->ia_valid & ATTR_MODE) { 474 if (iattr->ia_valid & ATTR_MODE) {