author: Christoph Hellwig <hch@lst.de> 2010-06-04 11:30:02 +0200
committer: Al Viro <viro@zeniv.linux.org.uk> 2010-08-09 16:47:37 -0400
commit: 1025774ce411f2bd4b059ad7b53f0003569b74fa
parent: eef2380c187890816b73b1a4cb89a09203759469
Commit Summary:
Diffstat:
1 file changed, 9 insertions, 1 deletion
diff --git a/fs/omfs/file.c b/fs/omfs/file.c
index 78c9f0c1a2f3..5542c284dc1c 100644
--- a/fs/omfs/file.c
+++ b/fs/omfs/file.c
@@ -349,7 +349,17 @@ static int omfs_setattr(struct dentry *dentry, struct iattr *attr)
error = inode_change_ok(inode, attr);
if (error)
return error;
- return inode_setattr(inode, attr);
+
+ if ((attr->ia_valid & ATTR_SIZE) &&
+ attr->ia_size != i_size_read(inode)) {
+ error = vmtruncate(inode, attr->ia_size);
+ if (error)
+ return error;
+ }
+
+ setattr_copy(inode, attr);
+ mark_inode_dirty(inode);
+ return 0;
}
const struct inode_operations omfs_file_inops = {