ext2fsP.h revision c21cde9986e69756254b65b7a48974222f358a2e
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_warn_bitmap32(ext2fs_generic_bitmap bitmap, const char *func);
142
143extern int ext2fs_mem_is_zero(const char *mem, size_t len);
144