annotate toys/e2fs.h @ 76:e6332139adae

More work on mke2fs.
author Rob Landley <rob@landley.net>
date Tue, 23 Jan 2007 19:54:01 -0500
parents 89ca591a9236
children 7a058d60faf1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
75
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
1 /* vi: set ts=4:
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
2 *
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
3 * mke2fs.h - Headers for ext2
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
4 *
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
5 * Copyright 2006 Rob Landley <rob@landley.net>
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
6 */
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
7
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
8 // Stuff defined in linux/ext2_fs.h
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
9
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
10 #define EXT2_SUPER_MAGIC 0xEF53
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
11
76
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
12 struct ext2_superblock {
75
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
13 uint32_t inodes_count; // Inodes count
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
14 uint32_t blocks_count; // Blocks count
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
15 uint32_t r_blocks_count; // Reserved blocks count
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
16 uint32_t free_blocks_count; // Free blocks count
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
17 uint32_t free_inodes_count; // Free inodes count
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
18 uint32_t first_data_block; // First Data Block
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
19 uint32_t log_block_size; // Block size
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
20 uint32_t log_frag_size; // Fragment size
76
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
21 uint32_t blocks_per_group; // Blocks per group
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
22 uint32_t frags_per_group; // Fragments per group
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
23 uint32_t inodes_per_group; // Inodes per group
75
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
24 uint32_t mtime; // Mount time
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
25 uint32_t wtime; // Write time
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
26 uint16_t mnt_count; // Mount count
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
27 uint16_t max_mnt_count; // Maximal mount count
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
28 uint16_t magic; // Magic signature
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
29 uint16_t state; // File system state
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
30 uint16_t errors; // Behaviour when detecting errors
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
31 uint16_t minor_rev_level; // minor revision level
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
32 uint32_t lastcheck; // time of last check
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
33 uint32_t checkinterval; // max. time between checks
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
34 uint32_t creator_os; // OS
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
35 uint32_t rev_level; // Revision level
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
36 uint16_t def_resuid; // Default uid for reserved blocks
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
37 uint16_t def_resgid; // Default gid for reserved blocks
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
38 uint32_t first_ino; // First non-reserved inode
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
39 uint16_t inode_size; // size of inode structure
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
40 uint16_t block_group_nr; // block group # of this superblock
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
41 uint32_t feature_compat; // compatible feature set
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
42 uint32_t feature_incompat; // incompatible feature set
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
43 uint32_t feature_ro_compat; // readonly-compatible feature set
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
44 char uuid[16]; // 128-bit uuid for volume
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
45 char volume_name[16]; // volume name
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
46 char last_mounted[64]; // directory where last mounted
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
47 uint32_t alg_usage_bitmap; // For compression
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
48 // For EXT2_COMPAT_PREALLOC
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
49 uint8_t prealloc_blocks; // Nr of blocks to try to preallocate
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
50 uint8_t prealloc_dir_blocks; //Nr to preallocate for dirs
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
51 uint16_t padding1;
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
52 // For EXT3_FEATURE_COMPAT_HAS_JOURNAL
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
53 uint8_t journal_uuid[16]; // uuid of journal superblock
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
54 uint32_t journal_inum; // inode number of journal file
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
55 uint32_t journal_dev; // device number of journal file
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
56 uint32_t last_orphan; // start of list of inodes to delete
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
57 uint32_t hash_seed[4]; // HTREE hash seed
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
58 uint8_t def_hash_version; // Default hash version to use
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
59 uint8_t padding2[3];
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
60 uint32_t default_mount_opts;
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
61 uint32_t first_meta_bg; // First metablock block group
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
62 uint32_t mkfs_time; // Creation timestamp
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
63 uint32_t jnl_blocks[17]; // Backup of journal inode
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
64 uint32_t reserved[172]; // Padding to the end of the block
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
65 };
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
66
76
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
67 struct ext2_dentry {
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
68 uint32_t inode; // Inode number
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
69 uint16_t rec_len; // Directory entry length
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
70 uint8_t name_len; // Name length
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
71 uint8_t file_type;
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
72 char name[255]; // File name
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
73 };
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
74
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
75 struct ext2_inode {
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
76 uint16_t mode; // File mode
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
77 uint16_t uid; // Low 16 bits of Owner Uid
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
78 uint32_t size; // Size in bytes
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
79 uint32_t atime; // Access time
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
80 uint32_t ctime; // Creation time
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
81 uint32_t mtime; // Modification time
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
82 uint32_t dtime; // Deletion Time
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
83 uint16_t gid; // Low 16 bits of Group Id
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
84 uint16_t links_count; // Links count
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
85 uint32_t blocks; // Blocks count
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
86 uint32_t flags; // File flags
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
87 uint32_t reserved1;
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
88 uint32_t block[15]; // Pointers to blocks
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
89 uint32_t generation; // File version (for NFS)
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
90 uint32_t file_acl; // File ACL
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
91 uint32_t dir_acl; // Directory ACL
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
92 uint32_t faddr; // Fragment address
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
93 uint8_t frag; // Fragment number
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
94 uint8_t fsize; // Fragment size
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
95 uint16_t pad1;
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
96 uint16_t uid_high; // High bits of uid
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
97 uint16_t gid_high; // High bits of gid
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
98 uint32_t reserved2;
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
99 };
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
100
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
101
e6332139adae More work on mke2fs.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
102
75
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
103 #define EXT2_FEATURE_COMPAT_DIR_PREALLOC 0x0001
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
104 #define EXT2_FEATURE_COMPAT_IMAGIC_INODES 0x0002
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
105 #define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
106 #define EXT2_FEATURE_COMPAT_EXT_ATTR 0x0008
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
107 #define EXT2_FEATURE_COMPAT_RESIZE_INO 0x0010
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
108 #define EXT2_FEATURE_COMPAT_DIR_INDEX 0x0020
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
109
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
110 #define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
111 #define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
112 #define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
113
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
114 #define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
115 #define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
116 #define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
117 #define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
118 #define EXT2_FEATURE_INCOMPAT_META_BG 0x0010
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
119
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
120 #define EXT2_NAME_LEN 255
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
121
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
122 // Ext2 directory file types. Only the low 3 bits are used. The
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
123 // other bits are reserved for now.
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
124
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
125 enum {
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
126 EXT2_FT_UNKNOWN,
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
127 EXT2_FT_REG_FILE,
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
128 EXT2_FT_DIR,
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
129 EXT2_FT_CHRDEV,
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
130 EXT2_FT_BLKDEV,
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
131 EXT2_FT_FIFO,
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
132 EXT2_FT_SOCK,
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
133 EXT2_FT_SYMLINK,
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
134 EXT2_FT_MAX
89ca591a9236 More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
135 };