2005-04-17 02:20:36 +04:00
/*
* linux / fs / ufs / file . c
*
* Copyright ( C ) 1998
* Daniel Pirkl < daniel . pirkl @ email . cz >
* Charles University , Faculty of Mathematics and Physics
*
* from
*
* linux / fs / ext2 / file . c
*
* Copyright ( C ) 1992 , 1993 , 1994 , 1995
* Remy Card ( card @ masi . ibp . fr )
* Laboratoire MASI - Institut Blaise Pascal
* Universite Pierre et Marie Curie ( Paris VI )
*
* from
*
* linux / fs / minix / file . c
*
* Copyright ( C ) 1991 , 1992 Linus Torvalds
*
* ext2 fs regular file handling primitives
*/
# include <linux/fs.h>
2006-06-25 16:47:30 +04:00
# include <linux/buffer_head.h> /* for sync_mapping_buffers() */
2008-02-08 15:21:31 +03:00
# include "ufs_fs.h"
2007-10-17 10:26:51 +04:00
# include "ufs.h"
2006-06-25 16:47:30 +04:00
static int ufs_sync_file ( struct file * file , struct dentry * dentry , int datasync )
{
struct inode * inode = dentry - > d_inode ;
int err ;
int ret ;
ret = sync_mapping_buffers ( inode - > i_mapping ) ;
if ( ! ( inode - > i_state & I_DIRTY ) )
return ret ;
if ( datasync & & ! ( inode - > i_state & I_DIRTY_DATASYNC ) )
return ret ;
err = ufs_sync_inode ( inode ) ;
if ( ret = = 0 )
ret = err ;
return ret ;
}
2005-04-17 02:20:36 +04:00
/*
* We have mostly NULL ' s here : the current defaults are ok for
* the ufs filesystem .
*/
2006-03-28 13:56:42 +04:00
const struct file_operations ufs_file_operations = {
2005-04-17 02:20:36 +04:00
. llseek = generic_file_llseek ,
2006-10-01 10:28:48 +04:00
. read = do_sync_read ,
. aio_read = generic_file_aio_read ,
. write = do_sync_write ,
. aio_write = generic_file_aio_write ,
2005-04-17 02:20:36 +04:00
. mmap = generic_file_mmap ,
. open = generic_file_open ,
2006-06-25 16:47:30 +04:00
. fsync = ufs_sync_file ,
2007-06-01 13:49:19 +04:00
. splice_read = generic_file_splice_read ,
2005-04-17 02:20:36 +04:00
} ;