00001 #ifndef _LINUX_EXT_FS_H
00002 #define _LINUX_EXT_FS_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #define EXT_NAME_LEN 255
00013 #define EXT_ROOT_INO 1
00014
00015 #define EXT_SUPER_MAGIC 0x137D
00016
00017 #define EXT_INODES_PER_BLOCK ((BLOCK_SIZE)/(sizeof (struct ext_inode)))
00018
00019 struct ext_inode {
00020 unsigned short i_mode;
00021 unsigned short i_uid;
00022 unsigned long i_size;
00023 unsigned long i_time;
00024 unsigned short i_gid;
00025 unsigned short i_nlinks;
00026 unsigned long i_zone[12];
00027 };
00028
00029 struct ext_free_inode {
00030 unsigned long count;
00031 unsigned long free[14];
00032 unsigned long next;
00033 };
00034
00035 struct ext_free_block {
00036 unsigned long count;
00037 unsigned long free[254];
00038 unsigned long next;
00039 };
00040
00041 struct ext_super_block {
00042 unsigned long s_ninodes;
00043 unsigned long s_nzones;
00044 unsigned long s_firstfreeblock;
00045 unsigned long s_freeblockscount;
00046 unsigned long s_firstfreeinode;
00047 unsigned long s_freeinodescount;
00048 unsigned long s_firstdatazone;
00049 unsigned long s_log_zone_size;
00050 unsigned long s_max_size;
00051 unsigned long s_reserved1;
00052 unsigned long s_reserved2;
00053 unsigned long s_reserved3;
00054 unsigned long s_reserved4;
00055 unsigned long s_reserved5;
00056 unsigned short s_magic;
00057 };
00058
00059 struct ext_dir_entry {
00060 unsigned long inode;
00061 unsigned short rec_len;
00062 unsigned short name_len;
00063 char name[EXT_NAME_LEN];
00064 };
00065
00066 extern int ext_open(struct inode * inode, struct file * filp);
00067 extern void ext_release(struct inode * inode, struct file * filp);
00068 extern int ext_lookup(struct inode * dir,const char * name, int len,
00069 struct inode ** result);
00070 extern int ext_create(struct inode * dir,const char * name, int len, int mode,
00071 struct inode ** result);
00072 extern int ext_mkdir(struct inode * dir, const char * name, int len, int mode);
00073 extern int ext_rmdir(struct inode * dir, const char * name, int len);
00074 extern int ext_unlink(struct inode * dir, const char * name, int len);
00075 extern int ext_symlink(struct inode * inode, const char * name, int len,
00076 const char * symname);
00077 extern int ext_link(struct inode * oldinode, struct inode * dir, const char * name, int len);
00078 extern int ext_mknod(struct inode * dir, const char * name, int len, int mode, int rdev);
00079 extern int ext_rename(struct inode * old_dir, const char * old_name, int old_len,
00080 struct inode * new_dir, const char * new_name, int new_len);
00081 extern struct inode * ext_new_inode(const struct inode * dir);
00082 extern void ext_free_inode(struct inode * inode);
00083 extern unsigned long ext_count_free_inodes(struct super_block *sb);
00084 extern int ext_new_block(struct super_block * sb);
00085 extern void ext_free_block(struct super_block * sb, int block);
00086 extern unsigned long ext_count_free_blocks(struct super_block *sb);
00087
00088 extern int ext_bmap(struct inode *,int);
00089
00090 extern struct buffer_head * ext_getblk(struct inode *, int, int);
00091 extern struct buffer_head * ext_bread(struct inode *, int, int);
00092
00093 extern void ext_truncate(struct inode *);
00094 extern void ext_put_super(struct super_block *);
00095 extern void ext_write_super(struct super_block *);
00096 extern struct super_block *ext_read_super(struct super_block *,void *,int);
00097 extern void ext_read_inode(struct inode *);
00098 extern void ext_write_inode(struct inode *);
00099 extern void ext_put_inode(struct inode *);
00100 extern void ext_statfs(struct super_block *, struct statfs *);
00101 extern int ext_sync_inode(struct inode *);
00102 extern int ext_sync_file(struct inode *, struct file *);
00103
00104 extern int ext_lseek(struct inode *, struct file *, off_t, int);
00105 extern int ext_read(struct inode *, struct file *, char *, int);
00106 extern int ext_write(struct inode *, struct file *, char *, int);
00107
00108 extern struct inode_operations ext_file_inode_operations;
00109 extern struct inode_operations ext_dir_inode_operations;
00110 extern struct inode_operations ext_symlink_inode_operations;
00111
00112 #endif