2005-04-16 15:20:36 -07:00
/*
* linux / fs / minix / file . c
*
* Copyright ( C ) 1991 , 1992 Linus Torvalds
*
* minix regular file handling primitives
*/
# include "minix.h"
/*
* We have mostly NULLs here : the current defaults are OK for
* the minix filesystem .
*/
2006-03-28 01:56:42 -08:00
const struct file_operations minix_file_operations = {
2005-04-16 15:20:36 -07:00
. llseek = generic_file_llseek ,
2014-04-02 14:33:16 -04:00
. read_iter = generic_file_read_iter ,
2014-04-03 03:17:43 -04:00
. write_iter = generic_file_write_iter ,
2005-04-16 15:20:36 -07:00
. mmap = generic_file_mmap ,
2010-05-26 17:53:41 +02:00
. fsync = generic_file_fsync ,
2007-06-01 11:49:19 +02:00
. splice_read = generic_file_splice_read ,
2005-04-16 15:20:36 -07:00
} ;
2010-06-04 11:29:59 +02:00
static int minix_setattr ( struct dentry * dentry , struct iattr * attr )
{
2015-03-17 22:25:59 +00:00
struct inode * inode = d_inode ( dentry ) ;
2010-06-04 11:29:59 +02:00
int error ;
error = inode_change_ok ( inode , attr ) ;
if ( error )
return error ;
2010-06-04 11:30:02 +02:00
if ( ( attr - > ia_valid & ATTR_SIZE ) & &
attr - > ia_size ! = i_size_read ( inode ) ) {
2012-12-15 11:56:25 +01:00
error = inode_newsize_ok ( inode , attr - > ia_size ) ;
2010-06-04 11:30:02 +02:00
if ( error )
return error ;
2012-12-15 11:56:25 +01:00
truncate_setsize ( inode , attr - > ia_size ) ;
minix_truncate ( inode ) ;
2010-06-04 11:30:02 +02:00
}
setattr_copy ( inode , attr ) ;
mark_inode_dirty ( inode ) ;
return 0 ;
2010-06-04 11:29:59 +02:00
}
2007-02-12 00:55:39 -08:00
const struct inode_operations minix_file_inode_operations = {
2010-06-04 11:29:59 +02:00
. setattr = minix_setattr ,
2005-04-16 15:20:36 -07:00
. getattr = minix_getattr ,
} ;