-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathREADME.globals
213 lines (160 loc) · 10.5 KB
/
README.globals
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
The following global variables are used. They are initialized in the given order.
* Global initialization
- no_filtering Initialized to zero before main().
(Sometimes) incremented before iterate_over_directory and decremented at the end.
* main()
* decode_commandline_options()
- progname Initialized in decode_commandline_options(). Never changed anymore.
- commandline_* Defaulted when they are defined (* Global initialization).
Possibly changed and set to their 'final' value in decode_commandline_options().
However, commandline_group, commandline_block, commandline_allocated and commandline_unallocated
are sometimes changed in run_program() (as function of the other commandline options).
commandline_depth is temporarily set to 10000 before a call to iterate_over_directory()
or iterate_over_directory() in respectively link_extended_directory_block_to_inode() and
init_directories() and then reset to it's former value.
- std::set<Accept> accepted_filenames
Initialized in decode_commandline_options(). New entries are added in is_directory() for
every warning starting with "WARNING: Rejecting possible directory ...".
* main()
- device Opened and closed in main(). Members seekg() and read() are called from everywhere.
- device_fd Opened and closed in main(). Used to mmap all_inodes[group] in load_inodes(group).
- super_block Initialized in main(). Never changed anymore.
- device_name Initialized in main(). Never changed anymore.
* init_consts()
- groups_, block_size_, block_size_log_, inodes_per_group_, inode_size_, inode_count_, block_count_
Copies from the superblock, initialized in init_consts(). Never changed anymore.
- page_size_ Initialized in init_consts(). Never changed anymore.
- Accept::S_illegal, Accept::S_unlikely
Initialized in init_accept(), called from init_consts().
(Currently) never changed anymore. Currently (r60) not even used.
- reserved_memory, inodes_buf
Initialized in init_consts(). Never changed anymore.
- all_inodes, all_mmaps, block_bitmap, inode_bitmap
Arrays of pointers. The arrays are allocated in init_consts() and never changed anymore.
See all_inodes[], all_mmaps[], block_bitmap[], inode_bitmap[] for further initialization.
- group_descriptor_table, group_descriptor_table[]
Initialized in init_consts(). Never changed anymore.
* run_program()
- feature_incompat_filetype
Initialized in run_program(). Never changed anymore.
- journal_super_block Initialized in run_program(). Never changed anymore.
* init_journal_consts()
- journal_block_size_, journal_maxlen_, journal_first_, journal_sequence_, journal_start_
Copies from the journal superblock, initialized in init_journal_consts(). Never changed anymore.
- journal_inode Initialized in init_journal_consts(). Never changed anymore.
* init_journal()
- smallest_block_nr, largest_block_nr, min_journal_block, max_journal_block
Initialized in init_journal(). Never changed anymore.
- is_indirect_block_in_journal_bitmap, is_indirect_block_in_journal_bitmap[]
Initialized in init_journal(). Never changed anymore.
- journal_block_bitmap, journal_block_bitmap[],
Initialized in init_journal(). Never changed anymore.
- number_of_descriptors, min_sequence, max_sequence
Initialized by calling count_descriptors(), called from init_journal(). Never changed anymore.
- std::vector<Descriptor*> all_descriptors
Initialized in init_journal(). Never changed anymore.
- wrapped_journal_sequence
Initialized in init_journal(). Never changed anymore.
- std::map<int, std::vector<Descriptor*> > block_to_descriptors_map;
New descriptors are added in add_block_descriptor(), which is called
from DescriptorTag::add_block_descriptors and DescriptorRevoke::add_block_descriptors,
which are called init_journal() while running over all_descriptors.
Never changed anymore.
- std::map<int, Descriptor*> block_in_journal_to_descriptors_map;
New entries are added in add_block_in_journal_descriptor(), which is called
from DescriptorTag::add_block_descriptors, DescriptorRevoke::add_block_descriptors and
DescriptorCommit::add_block_descriptors, which are called init_journal() in the same loop.
Never changed anymore.
- std::map<int, Transaction> sequence_transaction_map;
Initialized in init_journal() in the same loop. Never changed anymore.
- std::map<int, int> block_to_dir_inode_map;
New elements are added, or an existing one is updated, in directory_inode_action(),
which is called from iterate_over_all_blocks_of() from init_journal(), in the same loop.
* run_program(), command line option handling.
- depth Set to 1 at the start of print_directory() and incremented/decremented
every iteration in filter_dir_entry().
- S_min, S_max, S_bs, histo[], S_maxcount
Initialized in hist_init(), called from run_program when --histogram is used.
S_maxcount and histo[] are set to 0 initially in hist_init() and incremented
in hist_add(), called from within a loop in run_program() following hist_init().
* init_dir_inode_to_block_cache() [STAGE 1]
This function is called from init_directories() if the the stage1 file doesn't exist yet.
init_directories() is only executed once, subsequent invokation simply return immediately.
init_directories() is called from
init_files(),
dir_inode_to_block(), or
print_directory_inode().
init_files() is called from
dump_names() (--dump-names or --restore-all),
show_hardlinks() (--show-hardlinks) and
restore_file() (--restore-file (and --restore-all)).
dir_inode_to_block() is called from
filter_dir_entry(),
init_directories_action(),
print_directory_inode(),
extended_directory_action() and
init_directories().
print_directory_inode() is called from run_program() (--inode).
filter_dir_entry() is called from
iterate_over_directory()
init_directories_action() is called from
link_extended_directory_block_to_inode()
init_directories().
extended_directory_action() is called from
init_directories()
link_extended_directory_block_to_inode() is called from
init_directories().
iterate_over_directory() is called from
iterate_over_directory_action(),
iterate_over_existing_directory_action(),
DirectoryBlock::read_block(),
print_directory(),
link_extended_directory_block_to_inode() and
init_directories().
iterate_over_directory_action() is called from
filter_dir_entry().
iterate_over_existing_directory_action is called from
filter_dir_entry().
DirectoryBlock::read_block() is called from
print_directory(),
init_dir_inode_to_block_cache(),
Directory::Directory(),
link_extended_directory_block_to_inode() and
init_directories().
print_directory() is called from
print_directory_action() and
run_program() (--block).
Directory::Directory() is called from
init_directories_action() and
init_directories().
See http://groups.google.com/group/ext3grep/web/functions-generating-stage-1
- dir_inode_to_block_cache, dir_inode_to_block_cache[]
Allocated in init_dir_inode_to_block_cache()
dir_inode_to_block_cache[] is initialized during stage 1 with directory start blocks.
At the end of init_dir_inode_to_block_cache multiple blocks refering to the same inode
are resolved as much as possible. Of course, dir_inode_to_block_cache[] is also
initialized while reading one of the stage files.
- std::vector<int> extended_blocks
Initialized in init_dir_inode_to_block_cache() during stage 1, or when reading
the stage 1 cache file.
* init_directories() [STAGE 2]
- std::map<std::string, Directory> all_directories
New elements are inserted during stage 2 in init_directories_action() or while loading stage 2.
init_directories_action() is called from iterate_over_directory(), from
init_directories() for the root directory blocks, and recursively from
init_directories_action() for extended directory blocks.
- std::map<uint32_t, all_directories_type::iterator> inode_to_directory
New elements are inserted during stage 2 in init_directories_action() or while loading stage 2.
See all_directories.
* init_files()
This function is called from
dump_names() (--dump-names or --restore-all),
show_hardlinks() (--show-hardlinks) and
restore_file() (--restore-file (and --restore-all)).
- std::map<int, std::vector<std::vector<DirEntry>::iterator> > inode_to_dir_entry
Initialized in init_files() from the dir entry vectors in the DirectoryBlock lists
in the Directory objects from all_directories.
- std::map<std::string, int> path_to_inode_map
Initialized in init_files() from the local arrays index_to_filename[] and file_dirblock_matrix[],
which are just before that generated from the dir entry vectors in the DirectoryBlock lists
in the Directory objects from all_directories.