2005-04-17 02:20:36 +04: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 13:56:42 +04:00
const struct file_operations minix_file_operations = {
2005-04-17 02:20:36 +04:00
. llseek = generic_file_llseek ,
2014-04-02 22:33:16 +04:00
. read = new_sync_read ,
. read_iter = generic_file_read_iter ,
2006-10-01 10:28:48 +04:00
. write = do_sync_write ,
. aio_write = generic_file_aio_write ,
2005-04-17 02:20:36 +04:00
. mmap = generic_file_mmap ,
2010-05-26 19:53:41 +04:00
. fsync = generic_file_fsync ,
2007-06-01 13:49:19 +04:00
. splice_read = generic_file_splice_read ,
2005-04-17 02:20:36 +04:00
} ;
2010-06-04 13:29:59 +04:00
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 ;
2010-06-04 13:30:02 +04:00
if ( ( attr - > ia_valid & ATTR_SIZE ) & &
attr - > ia_size ! = i_size_read ( inode ) ) {
2012-12-15 14:56:25 +04:00
error = inode_newsize_ok ( inode , attr - > ia_size ) ;
2010-06-04 13:30:02 +04:00
if ( error )
return error ;
2012-12-15 14:56:25 +04:00
truncate_setsize ( inode , attr - > ia_size ) ;
minix_truncate ( inode ) ;
2010-06-04 13:30:02 +04:00
}
setattr_copy ( inode , attr ) ;
mark_inode_dirty ( inode ) ;
return 0 ;
2010-06-04 13:29:59 +04:00
}
2007-02-12 11:55:39 +03:00
const struct inode_operations minix_file_inode_operations = {
2010-06-04 13:29:59 +04:00
. setattr = minix_setattr ,
2005-04-17 02:20:36 +04:00
. getattr = minix_getattr ,
} ;