ext2fsP.h revision 95fd65bb7fcf84e8d1e207f84b9d5a9f99626a38
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/* Generic numeric progress meter */ 89 90struct ext2fs_numeric_progress_struct { 91 __u64 max; 92 int log_max; 93 int skip_progress; 94}; 95 96extern void ext2fs_numeric_progress_init(ext2_filsys fs, 97 struct ext2fs_numeric_progress_struct * progress, 98 const char *label, __u64 max); 99extern void ext2fs_numeric_progress_update(ext2_filsys fs, 100 struct ext2fs_numeric_progress_struct * progress, 101 __u64 val); 102extern void ext2fs_numeric_progress_close(ext2_filsys fs, 103 struct ext2fs_numeric_progress_struct * progress, 104 const char *message); 105 106/* 107 * 64-bit bitmap support 108 */ 109 110#define EXT2FS_BMAP64_BITARRAY 1 111 112extern errcode_t ext2fs_alloc_generic_bmap(ext2_filsys fs, errcode_t magic, 113 int type, __u64 start, __u64 end, 114 __u64 real_end, 115 const char * description, 116 ext2fs_generic_bitmap *bmap); 117 118extern void ext2fs_free_generic_bmap(ext2fs_generic_bitmap bmap); 119 120extern errcode_t ext2fs_copy_generic_bmap(ext2fs_generic_bitmap src, 121 ext2fs_generic_bitmap *dest); 122 123extern errcode_t ext2fs_resize_generic_bmap(ext2fs_generic_bitmap bmap, 124 __u64 new_end, 125 __u64 new_real_end); 126extern errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap bitmap, 127 errcode_t neq, 128 __u64 end, __u64 *oend); 129extern int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap bitmap, 130 __u64 arg); 131extern int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap bitmap, 132 __u64 arg); 133extern int ext2fs_test_generic_bmap(ext2fs_generic_bitmap bitmap, 134 __u64 arg); 135extern errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap bitmap, 136 __u64 start, unsigned int num, 137 void *in); 138extern errcode_t ext2fs_get_generic_bmap_range(ext2fs_generic_bitmap bitmap, 139 __u64 start, unsigned int num, 140 void *out); 141extern int ext2fs_mem_is_zero(const char *mem, size_t len); 142