31#define EXT2_SUPER_MAGIC_CONST 0xEF53
32#define EXT2_MIN_BLOCK_SIZE 1024
33#define EXT2_NDIR_BLOCKS 12
34#define EXT2_IND_BLOCK EXT2_NDIR_BLOCKS
35#define EXT2_DIND_BLOCK (EXT2_IND_BLOCK + 1)
36#define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1)
37#define EXT2_N_BLOCKS (EXT2_TIND_BLOCK + 1)
38#define EXT2_VALID_FS 0x0001
39#define EXT2_ERROR_FS 0x0002
40#define EXT2_RESERVED_INODE_COUNT 11
45#define EXT2_OS_LINUX 0
47#define EXT2_OS_MASIX 2
48#define EXT2_OS_FREEBSD 3
49#define EXT2_OS_LITES 4
54#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004
55#define EXT2_FEATURE_COMPAT_HAS_DIR_INDEX 0x0020
57#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001
58#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002
59#define EXT4_FEATURE_RO_COMPAT_HUGE_FILE 0x0008
60#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010
61#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020
63#define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002
64#define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004
65#define EXT4_FEATURE_INCOMPAT_EXTENTS 0x0040
66#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080
67#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200
73#define EXT2_ROOT_INO 2
74#define EXT2_ACL_IDX_INO 3
75#define EXT2_ACL_DATA_INO 4
76#define EXT2_BOOT_LOADER_INO 5
77#define EXT2_UNDEL_DIR_INO 6
83#define EXT2_FT_UNKNOWN 0
84#define EXT2_FT_REG_FILE 1
86#define EXT2_FT_CHRDEV 3
87#define EXT2_FT_BLKDEV 4
90#define EXT2_FT_SYMLINK 7
95#define EXT2_ERRORS_CONTINUE 1
96#define EXT2_ERRORS_RO 2
97#define EXT2_ERRORS_PANIC 3
98#define EXT2_ERRORS_DEFAULT EXT2_ERRORS_CONTINUE
174#define i_size_high i_dir_acl
178 uint32_t s_inodes_count;
179 uint32_t s_blocks_count;
180 uint32_t s_r_blocks_count;
181 uint32_t s_free_blocks_count;
182 uint32_t s_free_inodes_count;
183 uint32_t s_first_data_block;
184 uint32_t s_log_block_size;
185 int32_t s_log_frag_size;
186 uint32_t s_blocks_per_group;
187 uint32_t s_frags_per_group;
188 uint32_t s_inodes_per_group;
191 uint16_t s_mnt_count;
192 int16_t s_max_mnt_count;
196 uint16_t s_minor_rev_level;
197 uint32_t s_lastcheck;
198 uint32_t s_checkinterval;
199 uint32_t s_creator_os;
200 uint32_t s_rev_level;
201 uint16_t s_def_resuid;
202 uint16_t s_def_resgid;
216 uint32_t s_first_ino;
217 uint16_t s_inode_size;
218 uint16_t s_block_group_nr;
219 uint32_t s_feature_compat;
220 uint32_t s_feature_incompat;
221 uint32_t s_feature_ro_compat;
223 char s_volume_name[16];
224 char s_last_mounted[64];
225 uint32_t s_algorithm_usage_bitmap;
230 uint8_t s_prealloc_blocks;
231 uint8_t s_prealloc_dir_blocks;
236 uint8_t s_journal_uuid[16];
237 uint32_t s_journal_inum;
238 uint32_t s_journal_dev;
239 uint32_t s_last_orphan;
241 uint32_t s_reserved[197];
244#define EXT2_DIRENT_INODE(dir_ent) (PED_LE32_TO_CPU((dir_ent).inode))
245#define EXT2_DIRENT_REC_LEN(dir_ent) (PED_LE16_TO_CPU((dir_ent).rec_len))
246#define EXT2_DIRENT_NAME_LEN(dir_ent) ((dir_ent).name_len)
247#define EXT2_DIRENT_FILE_TYPE(dir_ent) ((dir_ent).file_type)
249#define EXT2_GROUP_BLOCK_BITMAP(gd) (PED_LE32_TO_CPU((gd).bg_block_bitmap))
250#define EXT2_GROUP_INODE_BITMAP(gd) (PED_LE32_TO_CPU((gd).bg_inode_bitmap))
251#define EXT2_GROUP_INODE_TABLE(gd) (PED_LE32_TO_CPU((gd).bg_inode_table))
252#define EXT2_GROUP_FREE_BLOCKS_COUNT(gd) \
253 (PED_LE16_TO_CPU((gd).bg_free_blocks_count))
254#define EXT2_GROUP_FREE_INODES_COUNT(gd) \
255 (PED_LE16_TO_CPU((gd).bg_free_inodes_count))
256#define EXT2_GROUP_USED_DIRS_COUNT(gd) \
257 (PED_LE16_TO_CPU((gd).bg_used_dirs_count))
259#define EXT2_INODE_MODE(inode) (PED_LE16_TO_CPU((inode).i_mode))
260#define EXT2_INODE_UID(inode) (PED_LE16_TO_CPU((inode).i_uid))
261#define EXT2_INODE_SIZE(inode) \
262 ((uint64_t) PED_LE32_TO_CPU((inode).i_size) \
263 + ((uint64_t) PED_LE32_TO_CPU((inode).i_size_high) << 32))
264#define EXT2_INODE_ATIME(inode) (PED_LE32_TO_CPU((inode).i_atime))
265#define EXT2_INODE_CTIME(inode) (PED_LE32_TO_CPU((inode).i_ctime))
266#define EXT2_INODE_MTIME(inode) (PED_LE32_TO_CPU((inode).i_mtime))
267#define EXT2_INODE_DTIME(inode) (PED_LE32_TO_CPU((inode).i_dtime))
268#define EXT2_INODE_GID(inode) (PED_LE16_TO_CPU((inode).i_gid))
269#define EXT2_INODE_LINKS_COUNT(inode) (PED_LE16_TO_CPU((inode).i_links_count))
270#define EXT2_INODE_BLOCKS(inode) (PED_LE32_TO_CPU((inode).i_blocks))
271#define EXT2_INODE_FLAGS(inode) (PED_LE32_TO_CPU((inode).i_flags))
272#define EXT2_INODE_TRANSLATOR(inode) (PED_LE32_TO_CPU((inode).osd1.hurd1.h_i_translator))
273#define EXT2_INODE_BLOCK(inode, blk) (PED_LE32_TO_CPU((inode).i_block[blk]))
275#define EXT2_SUPER_INODES_COUNT(sb) (PED_LE32_TO_CPU((sb).s_inodes_count))
276#define EXT2_SUPER_BLOCKS_COUNT(sb) (PED_LE32_TO_CPU((sb).s_blocks_count))
277#define EXT2_SUPER_R_BLOCKS_COUNT(sb) (PED_LE32_TO_CPU((sb).s_r_blocks_count))
278#define EXT2_SUPER_FREE_BLOCKS_COUNT(sb) \
279 (PED_LE32_TO_CPU((sb).s_free_blocks_count))
280#define EXT2_SUPER_FREE_INODES_COUNT(sb) \
281 (PED_LE32_TO_CPU((sb).s_free_inodes_count))
282#define EXT2_SUPER_FIRST_DATA_BLOCK(sb) \
283 (PED_LE32_TO_CPU((sb).s_first_data_block))
284#define EXT2_SUPER_LOG_BLOCK_SIZE(sb) (PED_LE32_TO_CPU((sb).s_log_block_size))
285#define EXT2_SUPER_LOG_FRAG_SIZE(sb) \
286 ((int32_t) PED_LE32_TO_CPU((sb).s_log_frag_size))
287#define EXT2_SUPER_BLOCKS_PER_GROUP(sb) \
288 (PED_LE32_TO_CPU((sb).s_blocks_per_group))
289#define EXT2_SUPER_FRAGS_PER_GROUP(sb) \
290 (PED_LE32_TO_CPU((sb).s_frags_per_group))
291#define EXT2_SUPER_INODES_PER_GROUP(sb) \
292 (PED_LE32_TO_CPU((sb).s_inodes_per_group))
293#define EXT2_SUPER_MTIME(sb) (PED_LE32_TO_CPU((sb).s_mtime))
294#define EXT2_SUPER_WTIME(sb) (PED_LE32_TO_CPU((sb).s_wtime))
295#define EXT2_SUPER_MNT_COUNT(sb) (PED_LE16_TO_CPU((sb).s_mnt_count))
296#define EXT2_SUPER_MAX_MNT_COUNT(sb) \
297 ((int16_t) PED_LE16_TO_CPU((sb).s_max_mnt_count))
298#define EXT2_SUPER_MAGIC(sb) (PED_LE16_TO_CPU((sb).s_magic))
299#define EXT2_SUPER_STATE(sb) (PED_LE16_TO_CPU((sb).s_state))
300#define EXT2_SUPER_ERRORS(sb) (PED_LE16_TO_CPU((sb).s_errors))
301#define EXT2_SUPER_MINOR_REV_LEVEL(sb) \
302 (PED_LE16_TO_CPU((sb).s_minor_rev_level))
303#define EXT2_SUPER_LASTCHECK(sb) (PED_LE32_TO_CPU((sb).s_lastcheck))
304#define EXT2_SUPER_CHECKINTERVAL(sb) (PED_LE32_TO_CPU((sb).s_checkinterval))
305#define EXT2_SUPER_CREATOR_OS(sb) (PED_LE32_TO_CPU((sb).s_creator_os))
306#define EXT2_SUPER_REV_LEVEL(sb) (PED_LE32_TO_CPU((sb).s_rev_level))
307#define EXT2_SUPER_DEF_RESUID(sb) (PED_LE16_TO_CPU((sb).s_def_resuid))
308#define EXT2_SUPER_DEF_RESGID(sb) (PED_LE16_TO_CPU((sb).s_def_resgid))
310#define EXT2_SUPER_FIRST_INO(sb) (PED_LE32_TO_CPU((sb).s_first_ino))
311#define EXT2_SUPER_INODE_SIZE(sb) (PED_LE16_TO_CPU((sb).s_inode_size))
312#define EXT2_SUPER_BLOCK_GROUP_NR(sb) (PED_LE16_TO_CPU((sb).s_block_group_nr))
313#define EXT2_SUPER_FEATURE_COMPAT(sb) (PED_LE32_TO_CPU((sb).s_feature_compat))
314#define EXT2_SUPER_FEATURE_INCOMPAT(sb) \
315 (PED_LE32_TO_CPU((sb).s_feature_incompat))
316#define EXT2_SUPER_FEATURE_RO_COMPAT(sb) \
317 (PED_LE32_TO_CPU((sb).s_feature_ro_compat))
318#define EXT2_SUPER_UUID(sb) ((sb).s_uuid)
319#define EXT2_SUPER_VOLUME_NAME(sb) ((sb).s_volume_name)
320#define EXT2_SUPER_LAST_MOUNTED(sb) ((sb).s_last_mounted)
321#define EXT2_SUPER_ALGORITHM_USAGE_BITMAP(sb) \
322 (PED_LE32_TO_CPU((sb).s_algorithm_usage_bitmap))
324#define EXT2_SUPER_JOURNAL_UUID(sb) ((sb).s_journal_uuid)
325#define EXT2_SUPER_JOURNAL_INUM(sb) (PED_LE32_TO_CPU((sb).s_journal_inum))
326#define EXT2_SUPER_JOURNAL_DEV(sb) (PED_LE32_TO_CPU((sb).s_journal_dev))
327#define EXT2_SUPER_LAST_ORPHAN(sb) (PED_LE32_TO_CPU((sb).s_last_orphan))
typedef __attribute__
Definition: vtoc.h:80
#define EXT2_N_BLOCKS
Definition: ext2_fs.h:37
Definition: ext2_fs.h:101
uint32_t inode
Definition: ext2_fs.h:102
uint16_t rec_len
Definition: ext2_fs.h:103
uint8_t file_type
Definition: ext2_fs.h:105
char name[255]
Definition: ext2_fs.h:106
uint8_t name_len
Definition: ext2_fs.h:104
Definition: ext2_fs.h:110
uint16_t bg_free_inodes_count
Definition: ext2_fs.h:115
uint32_t bg_block_bitmap
Definition: ext2_fs.h:111
uint32_t bg_inode_bitmap
Definition: ext2_fs.h:112
uint32_t bg_inode_table
Definition: ext2_fs.h:113
uint16_t bg_pad
Definition: ext2_fs.h:117
uint16_t bg_used_dirs_count
Definition: ext2_fs.h:116
uint16_t bg_free_blocks_count
Definition: ext2_fs.h:114
uint32_t bg_reserved[3]
Definition: ext2_fs.h:118
Definition: ext2_fs.h:122
struct ext2_inode::@29::@34 hurd2
uint16_t i_uid
Definition: ext2_fs.h:124
uint8_t l_i_frag
Definition: ext2_fs.h:152
uint32_t i_dir_acl
Definition: ext2_fs.h:148
uint32_t h_i_author
Definition: ext2_fs.h:163
uint32_t i_flags
Definition: ext2_fs.h:133
uint32_t i_dtime
Definition: ext2_fs.h:129
uint32_t i_size
Definition: ext2_fs.h:125
uint16_t h_i_uid_high
Definition: ext2_fs.h:161
uint32_t i_faddr
Definition: ext2_fs.h:149
uint32_t i_block[EXT2_N_BLOCKS]
Definition: ext2_fs.h:145
uint32_t l_i_reserved1
Definition: ext2_fs.h:136
struct ext2_inode::@28::@31 hurd1
uint32_t i_generation
Definition: ext2_fs.h:146
struct ext2_inode::@28::@32 masix1
uint16_t h_i_mode_high
Definition: ext2_fs.h:160
uint8_t l_i_fsize
Definition: ext2_fs.h:153
uint32_t i_blocks
Definition: ext2_fs.h:132
uint32_t m_i_reserved2[2]
Definition: ext2_fs.h:169
uint32_t i_ctime
Definition: ext2_fs.h:127
uint32_t i_mtime
Definition: ext2_fs.h:128
uint16_t m_pad1
Definition: ext2_fs.h:168
uint16_t h_i_gid_high
Definition: ext2_fs.h:162
uint8_t h_i_frag
Definition: ext2_fs.h:158
uint8_t h_i_fsize
Definition: ext2_fs.h:159
uint16_t i_links_count
Definition: ext2_fs.h:131
uint32_t h_i_translator
Definition: ext2_fs.h:139
uint16_t i_mode
Definition: ext2_fs.h:123
uint32_t l_i_reserved2[2]
Definition: ext2_fs.h:155
uint32_t m_i_reserved1
Definition: ext2_fs.h:142
uint8_t m_i_frag
Definition: ext2_fs.h:166
uint8_t m_i_fsize
Definition: ext2_fs.h:167
struct ext2_inode::@29::@35 masix2
uint16_t i_pad1
Definition: ext2_fs.h:154
uint32_t i_atime
Definition: ext2_fs.h:126
union ext2_inode::@28 osd1
union ext2_inode::@29 osd2
uint32_t i_file_acl
Definition: ext2_fs.h:147
uint16_t i_gid
Definition: ext2_fs.h:130
struct ext2_inode::@28::@30 linux1
struct ext2_inode::@29::@33 linux2