ext2fsP.h revision 69365c689b7164014e539b40ef62fc8eb804a05c
1/* 2 * ext2fsP.h --- private header file for ext2 library 3 * 4 * Copyright (C) 1997 Theodore Ts'o. 5 * 6 * %Begin-Header% 7 * This file may be redistributed under the terms of the GNU Public 8 * License. 9 * %End-Header% 10 */ 11 12#include "ext2fs.h" 13 14/* 15 * Badblocks list 16 */ 17struct ext2_struct_u32_list { 18 int magic; 19 int num; 20 int size; 21 __u32 *list; 22 int badblocks_flags; 23}; 24 25struct ext2_struct_u32_iterate { 26 int magic; 27 ext2_u32_list bb; 28 int ptr; 29}; 30 31 32/* 33 * Directory block iterator definition 34 */ 35struct ext2_struct_dblist { 36 int magic; 37 ext2_filsys fs; 38 ext2_ino_t size; 39 ext2_ino_t count; 40 int sorted; 41 struct ext2_db_entry * list; 42}; 43 44/* 45 * For directory iterators 46 */ 47struct dir_context { 48 ext2_ino_t dir; 49 int flags; 50 char *buf; 51 int (*func)(ext2_ino_t dir, 52 int entry, 53 struct ext2_dir_entry *dirent, 54 int offset, 55 int blocksize, 56 char *buf, 57 void *priv_data); 58 void *priv_data; 59 errcode_t errcode; 60}; 61 62/* 63 * Inode cache structure 64 */ 65struct ext2_inode_cache { 66 void * buffer; 67 blk_t buffer_blk; 68 int cache_last; 69 int cache_size; 70 int refcount; 71 struct ext2_inode_cache_ent *cache; 72}; 73 74struct ext2_inode_cache_ent { 75 ext2_ino_t ino; 76 struct ext2_inode inode; 77}; 78 79/* Function prototypes */ 80 81extern int ext2fs_process_dir_block(ext2_filsys fs, 82 blk_t *blocknr, 83 e2_blkcnt_t blockcnt, 84 blk_t ref_block, 85 int ref_offset, 86 void *priv_data); 87 88 89/* 90 * 64-bit bitmap support 91 */ 92 93#define EXT2FS_BMAP64_BITARRAY 1 94 95extern errcode_t ext2fs_alloc_generic_bmap(ext2_filsys fs, errcode_t magic, 96 int type, __u64 start, __u64 end, 97 __u64 real_end, 98 const char * description, 99 ext2fs_generic_bitmap *bmap); 100 101extern void ext2fs_free_generic_bmap(ext2fs_generic_bitmap bmap); 102 103extern errcode_t ext2fs_copy_generic_bmap(ext2fs_generic_bitmap src, 104 ext2fs_generic_bitmap *dest); 105 106extern errcode_t ext2fs_resize_generic_bmap(ext2fs_generic_bitmap bmap, 107 __u64 new_end, 108 __u64 new_real_end); 109extern errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap bitmap, 110 errcode_t neq, 111 __u64 end, __u64 *oend); 112extern int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap bitmap, 113 __u64 arg); 114extern int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap bitmap, 115 __u64 arg); 116extern int ext2fs_test_generic_bmap(ext2fs_generic_bitmap bitmap, 117 __u64 arg); 118extern errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap bitmap, 119 __u64 start, unsigned int num, 120 void *in); 121extern errcode_t ext2fs_get_generic_bmap_range(ext2fs_generic_bitmap bitmap, 122 __u64 start, unsigned int num, 123 void *out); 124extern int ext2fs_mem_is_zero(const char *mem, size_t len); 125