blob: 9d107faa7dbf0750164f49e9c9f806a1c1484919 [file] [log] [blame]
Theodore Ts'o583a1ce2002-05-11 13:00:22 -04001Extended 2 filesystem structure definitions for ext2ed.
2
3Most of this file is just copied from the ext2 main include file.
4
5My parser is very primitive - It only searches for the struct keywords,
6and uses the variables in there. The rest of the file is just ignored.
7
8You will find at the end a few additional types which are not aviable in
9the original include file, such as the types "file" and "dir". They have
10no variables, but are necessary due to the way ext2ed binds C commands
11to specific types.
12
13Gadi Oxman, 7/95
14
15Here is the original copyright:
16
17/*
18 * linux/include/linux/ext2_fs.h
19 *
20 * Copyright (C) 1992, 1993, 1994 Remy Card (card@masi.ibp.fr)
21 * Laboratoire MASI - Institut Blaise Pascal
22 * Universite Pierre et Marie Curie (Paris VI)
23 *
24 * from
25 *
26 * linux/include/linux/minix_fs.h
27 *
28 * Copyright (C) 1991, 1992 Linus Torvalds
29 */
30
31
32/*
33 * ACL structures
34 */
35struct ext2_acl_header /* Header of Access Control Lists */
36{
37 unsigned long aclh_size;
38 unsigned long aclh_file_count;
39 unsigned long aclh_acle_count;
40 unsigned long aclh_first_acle;
41};
42
43struct ext2_acl_entry /* Access Control List Entry */
44{
45 unsigned long acle_size;
46 unsigned short acle_perms; /* Access permissions */
47 unsigned short acle_type; /* Type of entry */
48 unsigned short acle_tag; /* User or group identity */
49 unsigned short acle_pad1;
50 unsigned long acle_next; /* Pointer on next entry for the */
51 /* same inode or on next free entry */
52};
53
54/*
55 * Structure of a blocks group descriptor
56 */
57
58struct ext2_group_desc
59{
60 unsigned long bg_block_bitmap; /* Blocks bitmap block */
61 unsigned long bg_inode_bitmap; /* Inodes bitmap block */
62 unsigned long bg_inode_table; /* Inodes table block */
63 unsigned short bg_free_blocks_count; /* Free blocks count */
64 unsigned short bg_free_inodes_count; /* Free inodes count */
65 unsigned short bg_used_dirs_count; /* Directories count */
66 unsigned short bg_pad;
67 unsigned long bg_reserved[0];
68 unsigned long bg_reserved[1];
69 unsigned long bg_reserved[2];
70};
71
72/*
73 * Structure of an inode on the disk
74 */
75struct ext2_inode {
76 unsigned short i_mode; /* File mode */
77 unsigned short i_uid; /* Owner Uid */
78 unsigned long i_size; /* Size in bytes */
79 unsigned long i_atime; /* Access time */
80 unsigned long i_ctime; /* Creation time */
81 unsigned long i_mtime; /* Modification time */
82 unsigned long i_dtime; /* Deletion Time */
83 unsigned short i_gid; /* Group Id */
84 unsigned short i_links_count; /* Links count */
85 unsigned long i_blocks; /* Blocks count */
86 unsigned long i_flags; /* File flags */
87 unsigned long l_i_reserved1;
88 unsigned long i_block[0]; /* Pointers to blocks */
89 unsigned long i_block[1]; /* Pointers to blocks */
90 unsigned long i_block[2]; /* Pointers to blocks */
91 unsigned long i_block[3]; /* Pointers to blocks */
92 unsigned long i_block[4]; /* Pointers to blocks */
93 unsigned long i_block[5]; /* Pointers to blocks */
94 unsigned long i_block[6]; /* Pointers to blocks */
95 unsigned long i_block[7]; /* Pointers to blocks */
96 unsigned long i_block[8]; /* Pointers to blocks */
97 unsigned long i_block[9]; /* Pointers to blocks */
98 unsigned long i_block[10]; /* Pointers to blocks */
99 unsigned long i_block[11]; /* Pointers to blocks */
100 unsigned long i_block[12]; /* Pointers to blocks */
101 unsigned long i_block[13]; /* Pointers to blocks */
102 unsigned long i_block[14]; /* Pointers to blocks */
103 unsigned long i_version; /* File version (for NFS) */
104 unsigned long i_file_acl; /* File ACL */
105 unsigned long i_dir_acl; /* Directory ACL */
106 unsigned long i_faddr; /* Fragment address */
107 unsigned char l_i_frag; /* Fragment number */
108 unsigned char l_i_fsize; /* Fragment size */
109 unsigned short i_pad1;
110 unsigned long l_i_reserved2[0];
111 unsigned long l_i_reserved2[1];
112};
113
114/*
115 * Structure of the super block
116 */
117struct ext2_super_block {
118 unsigned long s_inodes_count; /* Inodes count */
119 unsigned long s_blocks_count; /* Blocks count */
120 unsigned long s_r_blocks_count; /* Reserved blocks count */
121 unsigned long s_free_blocks_count; /* Free blocks count */
122 unsigned long s_free_inodes_count; /* Free inodes count */
123 unsigned long s_first_data_block; /* First Data Block */
124 unsigned long s_log_block_size; /* Block size */
125 long s_log_frag_size; /* Fragment size */
126 unsigned long s_blocks_per_group; /* # Blocks per group */
127 unsigned long s_frags_per_group; /* # Fragments per group */
128 unsigned long s_inodes_per_group; /* # Inodes per group */
129 unsigned long s_mtime; /* Mount time */
130 unsigned long s_wtime; /* Write time */
131 unsigned short s_mnt_count; /* Mount count */
132 short s_max_mnt_count; /* Maximal mount count */
133 unsigned short s_magic; /* Magic signature */
134 unsigned short s_state; /* File system state */
135 unsigned short s_errors; /* Behaviour when detecting errors */
136 unsigned short s_pad;
137 unsigned long s_lastcheck; /* time of last check */
138 unsigned long s_checkinterval; /* max. time between checks */
139 unsigned long s_creator_os; /* OS */
140 unsigned long s_rev_level; /* Revision level */
141 unsigned short s_def_resuid;
142 unsigned short s_deg_resgid;
143
144 unsigned long s_reserved[0]; /* Padding to the end of the block */
145 unsigned long s_reserved[1];
146 unsigned long s_reserved[2];
147 unsigned long s_reserved[3];
148 unsigned long s_reserved[4];
149 unsigned long s_reserved[5];
150 unsigned long s_reserved[6];
151 unsigned long s_reserved[7];
152 unsigned long s_reserved[8];
153 unsigned long s_reserved[9];
154 unsigned long s_reserved[10];
155 unsigned long s_reserved[11];
156 unsigned long s_reserved[12];
157 unsigned long s_reserved[13];
158 unsigned long s_reserved[14];
159 unsigned long s_reserved[15];
160 unsigned long s_reserved[16];
161 unsigned long s_reserved[17];
162 unsigned long s_reserved[18];
163 unsigned long s_reserved[19];
164 unsigned long s_reserved[20];
165 unsigned long s_reserved[21];
166 unsigned long s_reserved[22];
167 unsigned long s_reserved[23];
168 unsigned long s_reserved[24];
169 unsigned long s_reserved[25];
170 unsigned long s_reserved[26];
171 unsigned long s_reserved[27];
172 unsigned long s_reserved[28];
173 unsigned long s_reserved[29];
174 unsigned long s_reserved[30];
175 unsigned long s_reserved[31];
176 unsigned long s_reserved[32];
177 unsigned long s_reserved[33];
178 unsigned long s_reserved[34];
179 unsigned long s_reserved[35];
180 unsigned long s_reserved[36];
181 unsigned long s_reserved[37];
182 unsigned long s_reserved[38];
183 unsigned long s_reserved[39];
184 unsigned long s_reserved[40];
185 unsigned long s_reserved[41];
186 unsigned long s_reserved[42];
187 unsigned long s_reserved[43];
188 unsigned long s_reserved[44];
189 unsigned long s_reserved[45];
190 unsigned long s_reserved[46];
191 unsigned long s_reserved[47];
192 unsigned long s_reserved[48];
193 unsigned long s_reserved[49];
194 unsigned long s_reserved[50];
195 unsigned long s_reserved[51];
196 unsigned long s_reserved[52];
197 unsigned long s_reserved[53];
198 unsigned long s_reserved[54];
199 unsigned long s_reserved[55];
200 unsigned long s_reserved[56];
201 unsigned long s_reserved[57];
202 unsigned long s_reserved[58];
203 unsigned long s_reserved[59];
204 unsigned long s_reserved[60];
205 unsigned long s_reserved[61];
206 unsigned long s_reserved[62];
207 unsigned long s_reserved[63];
208 unsigned long s_reserved[64];
209 unsigned long s_reserved[65];
210 unsigned long s_reserved[66];
211 unsigned long s_reserved[67];
212 unsigned long s_reserved[68];
213 unsigned long s_reserved[69];
214 unsigned long s_reserved[70];
215 unsigned long s_reserved[71];
216 unsigned long s_reserved[72];
217 unsigned long s_reserved[73];
218 unsigned long s_reserved[74];
219 unsigned long s_reserved[75];
220 unsigned long s_reserved[76];
221 unsigned long s_reserved[77];
222 unsigned long s_reserved[78];
223 unsigned long s_reserved[79];
224 unsigned long s_reserved[80];
225 unsigned long s_reserved[81];
226 unsigned long s_reserved[82];
227 unsigned long s_reserved[83];
228 unsigned long s_reserved[84];
229 unsigned long s_reserved[85];
230 unsigned long s_reserved[86];
231 unsigned long s_reserved[87];
232 unsigned long s_reserved[88];
233 unsigned long s_reserved[89];
234 unsigned long s_reserved[90];
235 unsigned long s_reserved[91];
236 unsigned long s_reserved[92];
237 unsigned long s_reserved[93];
238 unsigned long s_reserved[94];
239 unsigned long s_reserved[95];
240 unsigned long s_reserved[96];
241 unsigned long s_reserved[97];
242 unsigned long s_reserved[98];
243 unsigned long s_reserved[99];
244 unsigned long s_reserved[100];
245 unsigned long s_reserved[101];
246 unsigned long s_reserved[102];
247 unsigned long s_reserved[103];
248 unsigned long s_reserved[104];
249 unsigned long s_reserved[105];
250 unsigned long s_reserved[106];
251 unsigned long s_reserved[107];
252 unsigned long s_reserved[108];
253 unsigned long s_reserved[109];
254 unsigned long s_reserved[110];
255 unsigned long s_reserved[111];
256 unsigned long s_reserved[112];
257 unsigned long s_reserved[113];
258 unsigned long s_reserved[114];
259 unsigned long s_reserved[115];
260 unsigned long s_reserved[116];
261 unsigned long s_reserved[117];
262 unsigned long s_reserved[118];
263 unsigned long s_reserved[119];
264 unsigned long s_reserved[120];
265 unsigned long s_reserved[121];
266 unsigned long s_reserved[122];
267 unsigned long s_reserved[123];
268 unsigned long s_reserved[124];
269 unsigned long s_reserved[125];
270 unsigned long s_reserved[126];
271 unsigned long s_reserved[127];
272 unsigned long s_reserved[128];
273 unsigned long s_reserved[129];
274 unsigned long s_reserved[130];
275 unsigned long s_reserved[131];
276 unsigned long s_reserved[132];
277 unsigned long s_reserved[133];
278 unsigned long s_reserved[134];
279 unsigned long s_reserved[135];
280 unsigned long s_reserved[136];
281 unsigned long s_reserved[137];
282 unsigned long s_reserved[138];
283 unsigned long s_reserved[139];
284 unsigned long s_reserved[140];
285 unsigned long s_reserved[141];
286 unsigned long s_reserved[142];
287 unsigned long s_reserved[143];
288 unsigned long s_reserved[144];
289 unsigned long s_reserved[145];
290 unsigned long s_reserved[146];
291 unsigned long s_reserved[147];
292 unsigned long s_reserved[148];
293 unsigned long s_reserved[149];
294 unsigned long s_reserved[150];
295 unsigned long s_reserved[151];
296 unsigned long s_reserved[152];
297 unsigned long s_reserved[153];
298 unsigned long s_reserved[154];
299 unsigned long s_reserved[155];
300 unsigned long s_reserved[156];
301 unsigned long s_reserved[157];
302 unsigned long s_reserved[158];
303 unsigned long s_reserved[159];
304 unsigned long s_reserved[160];
305 unsigned long s_reserved[161];
306 unsigned long s_reserved[162];
307 unsigned long s_reserved[163];
308 unsigned long s_reserved[164];
309 unsigned long s_reserved[165];
310 unsigned long s_reserved[166];
311 unsigned long s_reserved[167];
312 unsigned long s_reserved[168];
313 unsigned long s_reserved[169];
314 unsigned long s_reserved[170];
315 unsigned long s_reserved[171];
316 unsigned long s_reserved[172];
317 unsigned long s_reserved[173];
318 unsigned long s_reserved[174];
319 unsigned long s_reserved[175];
320 unsigned long s_reserved[176];
321 unsigned long s_reserved[177];
322 unsigned long s_reserved[178];
323 unsigned long s_reserved[179];
324 unsigned long s_reserved[180];
325 unsigned long s_reserved[181];
326 unsigned long s_reserved[182];
327 unsigned long s_reserved[183];
328 unsigned long s_reserved[184];
329 unsigned long s_reserved[185];
330 unsigned long s_reserved[186];
331 unsigned long s_reserved[187];
332 unsigned long s_reserved[188];
333 unsigned long s_reserved[189];
334 unsigned long s_reserved[190];
335 unsigned long s_reserved[191];
336 unsigned long s_reserved[192];
337 unsigned long s_reserved[193];
338 unsigned long s_reserved[194];
339 unsigned long s_reserved[195];
340 unsigned long s_reserved[196];
341 unsigned long s_reserved[197];
342 unsigned long s_reserved[198];
343 unsigned long s_reserved[199];
344 unsigned long s_reserved[200];
345 unsigned long s_reserved[201];
346 unsigned long s_reserved[202];
347 unsigned long s_reserved[203];
348 unsigned long s_reserved[204];
349 unsigned long s_reserved[205];
350 unsigned long s_reserved[206];
351 unsigned long s_reserved[207];
352 unsigned long s_reserved[208];
353 unsigned long s_reserved[209];
354 unsigned long s_reserved[210];
355 unsigned long s_reserved[211];
356 unsigned long s_reserved[212];
357 unsigned long s_reserved[213];
358 unsigned long s_reserved[214];
359 unsigned long s_reserved[215];
360 unsigned long s_reserved[216];
361 unsigned long s_reserved[217];
362 unsigned long s_reserved[218];
363 unsigned long s_reserved[219];
364 unsigned long s_reserved[220];
365 unsigned long s_reserved[221];
366 unsigned long s_reserved[222];
367 unsigned long s_reserved[223];
368 unsigned long s_reserved[224];
369 unsigned long s_reserved[225];
370 unsigned long s_reserved[226];
371 unsigned long s_reserved[227];
372 unsigned long s_reserved[228];
373 unsigned long s_reserved[229];
374 unsigned long s_reserved[230];
375 unsigned long s_reserved[231];
376 unsigned long s_reserved[232];
377 unsigned long s_reserved[233];
378 unsigned long s_reserved[234];
379};
380
381The following is actually not used, due to the variable length of the
382name field. EXT2ED handles directories through the type "dir" below.
383
384/*
385 * Structure of a directory entry
386 */
387
388/* struct ext2_dir_entry { */
389/*
390 unsigned long inode; /* Inode number */
391 unsigned short rec_len; /* Directory entry length */
392 unsigned short name_len; /* Name length */
393 char name[EXT2_NAME_LEN]; /* File name */
394};
395*/
396
397struct file {
398};
399
400struct dir {
401};
402
403struct block_bitmap {
404};
405
406struct inode_bitmap {
407};