diff options
Diffstat (limited to 'fs/minix/file.c')
| -rw-r--r-- | fs/minix/file.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/fs/minix/file.c b/fs/minix/file.c index d5320ff23faf..4493ce695ab8 100644 --- a/fs/minix/file.c +++ b/fs/minix/file.c | |||
| @@ -23,7 +23,29 @@ const struct file_operations minix_file_operations = { | |||
| 23 | .splice_read = generic_file_splice_read, | 23 | .splice_read = generic_file_splice_read, |
| 24 | }; | 24 | }; |
| 25 | 25 | ||
| 26 | static int minix_setattr(struct dentry *dentry, struct iattr *attr) | ||
| 27 | { | ||
| 28 | struct inode *inode = dentry->d_inode; | ||
| 29 | int error; | ||
| 30 | |||
| 31 | error = inode_change_ok(inode, attr); | ||
| 32 | if (error) | ||
| 33 | return error; | ||
| 34 | |||
| 35 | if ((attr->ia_valid & ATTR_SIZE) && | ||
| 36 | attr->ia_size != i_size_read(inode)) { | ||
| 37 | error = vmtruncate(inode, attr->ia_size); | ||
| 38 | if (error) | ||
| 39 | return error; | ||
| 40 | } | ||
| 41 | |||
| 42 | setattr_copy(inode, attr); | ||
| 43 | mark_inode_dirty(inode); | ||
| 44 | return 0; | ||
| 45 | } | ||
| 46 | |||
| 26 | const struct inode_operations minix_file_inode_operations = { | 47 | const struct inode_operations minix_file_inode_operations = { |
| 27 | .truncate = minix_truncate, | 48 | .truncate = minix_truncate, |
| 49 | .setattr = minix_setattr, | ||
| 28 | .getattr = minix_getattr, | 50 | .getattr = minix_getattr, |
| 29 | }; | 51 | }; |
