aboutsummaryrefslogtreecommitdiffstats
path: root/fs/exofs/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/exofs/inode.c')
-rw-r--r--fs/exofs/inode.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/fs/exofs/inode.c b/fs/exofs/inode.c
index 4bb6ef822e46..4bfc1f4fd013 100644
--- a/fs/exofs/inode.c
+++ b/fs/exofs/inode.c
@@ -887,8 +887,18 @@ int exofs_setattr(struct dentry *dentry, struct iattr *iattr)
887 if (error) 887 if (error)
888 return error; 888 return error;
889 889
890 error = inode_setattr(inode, iattr); 890 if ((iattr->ia_valid & ATTR_SIZE) &&
891 return error; 891 iattr->ia_size != i_size_read(inode)) {
892 int error;
893
894 error = vmtruncate(inode, iattr->ia_size);
895 if (error)
896 return error;
897 }
898
899 setattr_copy(inode, iattr);
900 mark_inode_dirty(inode);
901 return 0;
892} 902}
893 903
894static const struct osd_attr g_attr_inode_file_layout = ATTR_DEF( 904static const struct osd_attr g_attr_inode_file_layout = ATTR_DEF(