ext2fsP.h revision 08ae93a2eda03817deabf08d4da9015a283ed56b
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 Library 8 * General Public License, version 2. 9 * %End-Header% 10 */ 11 12#include "ext2fs.h" 13 14#define EXT2FS_MAX_NESTED_LINKS 8 15 16/* 17 * Badblocks list 18 */ 19struct ext2_struct_u32_list { 20 int magic; 21 int num; 22 int size; 23 __u32 *list; 24 int badblocks_flags; 25}; 26 27struct ext2_struct_u32_iterate { 28 int magic; 29 ext2_u32_list bb; 30 int ptr; 31}; 32 33 34/* 35 * Directory block iterator definition 36 */ 37struct ext2_struct_dblist { 38 int magic; 39 ext2_filsys fs; 40 unsigned long long size; 41 unsigned long long count; 42 int sorted; 43 struct ext2_db_entry2 * list; 44}; 45 46/* 47 * For directory iterators 48 */ 49struct dir_context { 50 ext2_ino_t dir; 51 int flags; 52 char *buf; 53 int (*func)(ext2_ino_t dir, 54 int entry, 55 struct ext2_dir_entry *dirent, 56 int offset, 57 int blocksize, 58 char *buf, 59 void *priv_data); 60 void *priv_data; 61 errcode_t errcode; 62}; 63 64/* 65 * Inode cache structure 66 */ 67struct ext2_inode_cache { 68 void * buffer; 69 blk_t buffer_blk; 70 int cache_last; 71 int cache_size; 72 int refcount; 73 struct ext2_inode_cache_ent *cache; 74}; 75 76struct ext2_inode_cache_ent { 77 ext2_ino_t ino; 78 struct ext2_inode inode; 79}; 80 81/* Function prototypes */ 82 83extern int ext2fs_process_dir_block(ext2_filsys fs, 84 blk64_t *blocknr, 85 e2_blkcnt_t blockcnt, 86 blk64_t ref_block, 87 int ref_offset, 88 void *priv_data); 89 90/* Generic numeric progress meter */ 91 92struct ext2fs_numeric_progress_struct { 93 __u64 max; 94 int log_max; 95 int skip_progress; 96}; 97 98extern void ext2fs_numeric_progress_init(ext2_filsys fs, 99 struct ext2fs_numeric_progress_struct * progress, 100 const char *label, __u64 max); 101extern void ext2fs_numeric_progress_update(ext2_filsys fs, 102 struct ext2fs_numeric_progress_struct * progress, 103 __u64 val); 104extern void ext2fs_numeric_progress_close(ext2_filsys fs, 105 struct ext2fs_numeric_progress_struct * progress, 106 const char *message); 107 108/* 109 * 64-bit bitmap support 110 */ 111 112#define EXT2FS_BMAP64_BITARRAY 1 113 114extern errcode_t ext2fs_alloc_generic_bmap(ext2_filsys fs, errcode_t magic, 115 int type, __u64 start, __u64 end, 116 __u64 real_end, 117 const char * description, 118 ext2fs_generic_bitmap *bmap); 119 120extern void ext2fs_free_generic_bmap(ext2fs_generic_bitmap bmap); 121 122extern errcode_t ext2fs_copy_generic_bmap(ext2fs_generic_bitmap src, 123 ext2fs_generic_bitmap *dest); 124 125extern errcode_t ext2fs_resize_generic_bmap(ext2fs_generic_bitmap bmap, 126 __u64 new_end, 127 __u64 new_real_end); 128extern errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap bitmap, 129 errcode_t neq, 130 __u64 end, __u64 *oend); 131extern int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap bitmap, 132 __u64 arg); 133extern int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap bitmap, 134 __u64 arg); 135extern int ext2fs_test_generic_bmap(ext2fs_generic_bitmap bitmap, 136 __u64 arg); 137extern errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap bitmap, 138 __u64 start, unsigned int num, 139 void *in); 140extern errcode_t ext2fs_get_generic_bmap_range(ext2fs_generic_bitmap bitmap, 141 __u64 start, unsigned int num, 142 void *out); 143extern void ext2fs_warn_bitmap32(ext2fs_generic_bitmap bitmap,const char *func); 144 145extern int ext2fs_mem_is_zero(const char *mem, size_t len); 146