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 d5320ff23fa..4493ce695ab 100644 --- a/fs/minix/file.c +++ b/fs/minix/file.c @@ -23,7 +23,29 @@ const struct file_operations minix_file_operations = {  	.splice_read	= generic_file_splice_read,  }; +static int minix_setattr(struct dentry *dentry, struct iattr *attr) +{ +	struct inode *inode = dentry->d_inode; +	int error; + +	error = inode_change_ok(inode, attr); +	if (error) +		return error; + +	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 minix_file_inode_operations = {  	.truncate	= minix_truncate, +	.setattr	= minix_setattr,  	.getattr	= minix_getattr,  };  |