#ifndef _DISK_H #define _DISK_H #include struct mem_inode_ind_s { struct mem_inode_ind_s *next; int level; int n; __u32 to_block; char data[0]; }; struct mem_inode_s { __u32 inode_nr; #define EXT2_UNKNOWN_INO 0 struct ext2_inode inode; struct mem_inode_s * next; __u32 block; int block_offset; __u32 to_block; int ok; int need_to_write; struct mem_inode_ind_s *indirect; }; extern struct mem_inode_s * mem_inodes; int find_inodes(int fd); int is_inode_table( __u32 block ); struct mem_inode_s *find_inode_by_number( int n ); struct mem_inode_s *find_inode_by_firstblock( __u32 block ); struct mem_inode_s *find_inode_by_direct_block( __u32 block ); int add_block_to_inode( struct mem_inode_s *inode, __u32 block ); int write_inodes( int fd ); int write_super( int fd ); /* ------ directories --------- */ struct mem_dir_s { struct mem_dir_s *next; __u32 block; __u32 inode_nr; __u32 parent_nr; struct mem_inode_s *inode; __u32 to_block; int ok; int need_to_write; char data[0]; }; int find_dirs(int fd); extern struct mem_dir_s *mem_dirs_first, *mem_dirs, *mem_root_dir_first; int is_in_dir( char *d, __u32 inum ); int write_dirs( int fd ); /* ------- salvage ------- */ int fill_blokmap( int fd ); int salvage_dir_blocks( void ); int salvage_dir_inodes( void ); int salvage_next_dir_blocks( void ); #endif