2009-06-22 11:11:20 +09:00
# ifndef FS_MINIX_H
# define FS_MINIX_H
2005-04-16 15:20:36 -07:00
# include <linux/fs.h>
# include <linux/pagemap.h>
# include <linux/minix_fs.h>
# define INODE_VERSION(inode) minix_sb(inode->i_sb)->s_version
# define MINIX_V1 0x0001 /* original minix fs */
# define MINIX_V2 0x0002 /* minix V2 fs */
2007-02-12 00:52:49 -08:00
# define MINIX_V3 0x0003 /* minix V3 fs */
2005-04-16 15:20:36 -07:00
/*
* minix fs inode data in memory
*/
struct minix_inode_info {
union {
__u16 i1_data [ 16 ] ;
__u32 i2_data [ 16 ] ;
} u ;
struct inode vfs_inode ;
} ;
/*
* minix super - block data in memory
*/
struct minix_sb_info {
unsigned long s_ninodes ;
unsigned long s_nzones ;
unsigned long s_imap_blocks ;
unsigned long s_zmap_blocks ;
unsigned long s_firstdatazone ;
unsigned long s_log_zone_size ;
unsigned long s_max_size ;
int s_dirsize ;
int s_namelen ;
int s_link_max ;
struct buffer_head * * s_imap ;
struct buffer_head * * s_zmap ;
struct buffer_head * s_sbh ;
struct minix_super_block * s_ms ;
unsigned short s_mount_state ;
unsigned short s_version ;
} ;
2008-02-07 00:15:44 -08:00
extern struct inode * minix_iget ( struct super_block * , unsigned long ) ;
2005-04-16 15:20:36 -07:00
extern struct minix_inode * minix_V1_raw_inode ( struct super_block * , ino_t , struct buffer_head * * ) ;
extern struct minix2_inode * minix_V2_raw_inode ( struct super_block * , ino_t , struct buffer_head * * ) ;
2010-03-04 17:32:14 +03:00
extern struct inode * minix_new_inode ( const struct inode * , int , int * ) ;
2005-04-16 15:20:36 -07:00
extern void minix_free_inode ( struct inode * inode ) ;
extern unsigned long minix_count_free_inodes ( struct minix_sb_info * sbi ) ;
extern int minix_new_block ( struct inode * inode ) ;
2007-02-12 00:52:49 -08:00
extern void minix_free_block ( struct inode * inode , unsigned long block ) ;
2005-04-16 15:20:36 -07:00
extern unsigned long minix_count_free_blocks ( struct minix_sb_info * sbi ) ;
extern int minix_getattr ( struct vfsmount * , struct dentry * , struct kstat * ) ;
2010-06-04 11:29:56 +02:00
extern int minix_prepare_chunk ( struct page * page , loff_t pos , unsigned len ) ;
2005-04-16 15:20:36 -07:00
extern void V1_minix_truncate ( struct inode * ) ;
extern void V2_minix_truncate ( struct inode * ) ;
extern void minix_truncate ( struct inode * ) ;
extern void minix_set_inode ( struct inode * , dev_t ) ;
extern int V1_minix_get_block ( struct inode * , long , struct buffer_head * , int ) ;
extern int V2_minix_get_block ( struct inode * , long , struct buffer_head * , int ) ;
2007-02-12 00:52:49 -08:00
extern unsigned V1_minix_blocks ( loff_t , struct super_block * ) ;
extern unsigned V2_minix_blocks ( loff_t , struct super_block * ) ;
2005-04-16 15:20:36 -07:00
extern struct minix_dir_entry * minix_find_entry ( struct dentry * , struct page * * ) ;
extern int minix_add_link ( struct dentry * , struct inode * ) ;
extern int minix_delete_entry ( struct minix_dir_entry * , struct page * ) ;
extern int minix_make_empty ( struct inode * , struct inode * ) ;
extern int minix_empty_dir ( struct inode * ) ;
extern void minix_set_link ( struct minix_dir_entry * , struct page * , struct inode * ) ;
extern struct minix_dir_entry * minix_dotdot ( struct inode * , struct page * * ) ;
extern ino_t minix_inode_by_name ( struct dentry * ) ;
2007-02-12 00:55:39 -08:00
extern const struct inode_operations minix_file_inode_operations ;
extern const struct inode_operations minix_dir_inode_operations ;
2006-03-28 01:56:42 -08:00
extern const struct file_operations minix_file_operations ;
extern const struct file_operations minix_dir_operations ;
2005-04-16 15:20:36 -07:00
static inline struct minix_sb_info * minix_sb ( struct super_block * sb )
{
return sb - > s_fs_info ;
}
static inline struct minix_inode_info * minix_i ( struct inode * inode )
{
return list_entry ( inode , struct minix_inode_info , vfs_inode ) ;
}
2009-06-22 11:11:20 +09:00
# endif /* FS_MINIX_H */