2005-12-15 14:31:24 -08:00
/* -*- mode: c; c-basic-offset: 8; -*-
* vim : noexpandtab sw = 8 ts = 8 sts = 0 :
*
* file . h
*
* Function prototypes
*
* Copyright ( C ) 2002 , 2004 Oracle . All rights reserved .
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation ; either
* version 2 of the License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* General Public License for more details .
*
* You should have received a copy of the GNU General Public
* License along with this program ; if not , write to the
* Free Software Foundation , Inc . , 59 Temple Place - Suite 330 ,
* Boston , MA 021110 - 1307 , USA .
*/
# ifndef OCFS2_FILE_H
# define OCFS2_FILE_H
2006-03-28 01:56:42 -08:00
extern const struct file_operations ocfs2_fops ;
extern const struct file_operations ocfs2_dops ;
2007-02-12 00:55:39 -08:00
extern const struct inode_operations ocfs2_file_iops ;
extern const struct inode_operations ocfs2_special_file_iops ;
2005-12-15 14:31:24 -08:00
struct ocfs2_alloc_context ;
2007-12-20 16:43:10 -08:00
struct ocfs2_file_private {
struct file * fp_file ;
struct mutex fp_mutex ;
struct ocfs2_lock_res fp_flock ;
} ;
2005-12-15 14:31:24 -08:00
enum ocfs2_alloc_restarted {
RESTART_NONE = 0 ,
RESTART_TRANS ,
RESTART_META
} ;
int ocfs2_do_extend_allocation ( struct ocfs2_super * osb ,
struct inode * inode ,
2007-03-09 16:43:28 -08:00
u32 * logical_offset ,
2005-12-15 14:31:24 -08:00
u32 clusters_to_add ,
2007-03-09 16:43:28 -08:00
int mark_unwritten ,
2005-12-15 14:31:24 -08:00
struct buffer_head * fe_bh ,
2006-10-09 18:11:45 -07:00
handle_t * handle ,
2005-12-15 14:31:24 -08:00
struct ocfs2_alloc_context * data_ac ,
struct ocfs2_alloc_context * meta_ac ,
2007-03-09 16:43:28 -08:00
enum ocfs2_alloc_restarted * reason_ret ) ;
2007-08-28 17:13:23 -07:00
int ocfs2_extend_no_holes ( struct inode * inode , u64 new_i_size ,
u64 zero_to ) ;
2007-02-09 20:24:12 -08:00
int ocfs2_lock_allocators ( struct inode * inode , struct ocfs2_dinode * di ,
2007-06-18 11:22:56 -07:00
u32 clusters_to_add , u32 extents_to_split ,
2007-02-09 20:24:12 -08:00
struct ocfs2_alloc_context * * data_ac ,
struct ocfs2_alloc_context * * meta_ac ) ;
2005-12-15 14:31:24 -08:00
int ocfs2_setattr ( struct dentry * dentry , struct iattr * attr ) ;
int ocfs2_getattr ( struct vfsmount * mnt , struct dentry * dentry ,
struct kstat * stat ) ;
2006-11-27 09:59:21 +08:00
int ocfs2_permission ( struct inode * inode , int mask ,
struct nameidata * nd ) ;
2005-12-15 14:31:24 -08:00
2006-11-15 15:48:42 +08:00
int ocfs2_should_update_atime ( struct inode * inode ,
struct vfsmount * vfsmnt ) ;
int ocfs2_update_inode_atime ( struct inode * inode ,
struct buffer_head * bh ) ;
2007-03-09 16:53:21 -08:00
int ocfs2_change_file_space ( struct file * file , unsigned int cmd ,
struct ocfs2_space_resv * sr ) ;
2005-12-15 14:31:24 -08:00
# endif /* OCFS2_FILE_H */