1 #ifndef _FAT_CVF 2 #define _FAT_CVF 3 4 #define CVF_USE_READPAGE 0x0001 5 6 struct cvf_format 7 { int cvf_version; 8 char* cvf_version_text; 9 unsigned long flags; 10 int (*detect_cvf) (struct super_block*sb); 11 int (*mount_cvf) (struct super_block*sb,char*options); 12 int (*unmount_cvf) (struct super_block*sb); 13 struct buffer_head* (*cvf_bread) (struct super_block*sb,int block); 14 struct buffer_head* (*cvf_getblk) (struct super_block*sb,int block); 15 void (*cvf_brelse) (struct super_block *sb,struct buffer_head *bh); 16 void (*cvf_mark_buffer_dirty) (struct super_block *sb, 17 struct buffer_head *bh); 18 void (*cvf_set_uptodate) (struct super_block *sb, 19 struct buffer_head *bh, 20 int val); 21 int (*cvf_is_uptodate) (struct super_block *sb,struct buffer_head *bh); 22 void (*cvf_ll_rw_block) (struct super_block *sb, 23 int opr, 24 int nbreq, 25 struct buffer_head *bh[32]); 26 int (*fat_access) (struct super_block *sb,int nr,int new_value); 27 int (*cvf_statfs) (struct super_block *sb,struct statfs *buf, int bufsiz); 28 int (*cvf_bmap) (struct inode *inode,int block); 29 ssize_t (*cvf_file_read) ( struct file *, char *, size_t, loff_t *); 30 ssize_t (*cvf_file_write) ( struct file *, const char *, size_t, loff_t *); 31 int (*cvf_mmap) (struct file *, struct vm_area_struct *); 32 int (*cvf_readpage) (struct inode *, struct page *); 33 int (*cvf_writepage) (struct inode *, struct page *); 34 int (*cvf_dir_ioctl) (struct inode * inode, struct file * filp, 35 unsigned int cmd, unsigned long arg); 36 void (*zero_out_cluster) (struct inode*, int clusternr); 37 }; 38 39 int register_cvf_format(struct cvf_format*cvf_format); 40 int unregister_cvf_format(struct cvf_format*cvf_format); 41 void dec_cvf_format_use_count_by_version(int version); 42 int detect_cvf(struct super_block*sb,char*force); 43 44 extern struct cvf_format *cvf_formats[]; 45 extern int cvf_format_use_count[]; 46 47 #endif 48