xref: /openbmc/linux/Documentation/filesystems/ext4/super.rst (revision 8a98ec7c7b3901330a036af0f62f523c31d763da)
1*8a98ec7cSDarrick J. Wong.. SPDX-License-Identifier: GPL-2.0
2*8a98ec7cSDarrick J. Wong
3*8a98ec7cSDarrick J. WongSuper Block
4*8a98ec7cSDarrick J. Wong-----------
5*8a98ec7cSDarrick J. Wong
6*8a98ec7cSDarrick J. WongThe superblock records various information about the enclosing
7*8a98ec7cSDarrick J. Wongfilesystem, such as block counts, inode counts, supported features,
8*8a98ec7cSDarrick J. Wongmaintenance information, and more.
9*8a98ec7cSDarrick J. Wong
10*8a98ec7cSDarrick J. WongIf the sparse\_super feature flag is set, redundant copies of the
11*8a98ec7cSDarrick J. Wongsuperblock and group descriptors are kept only in the groups whose group
12*8a98ec7cSDarrick J. Wongnumber is either 0 or a power of 3, 5, or 7. If the flag is not set,
13*8a98ec7cSDarrick J. Wongredundant copies are kept in all groups.
14*8a98ec7cSDarrick J. Wong
15*8a98ec7cSDarrick J. WongThe superblock checksum is calculated against the superblock structure,
16*8a98ec7cSDarrick J. Wongwhich includes the FS UUID.
17*8a98ec7cSDarrick J. Wong
18*8a98ec7cSDarrick J. WongThe ext4 superblock is laid out as follows in
19*8a98ec7cSDarrick J. Wong``struct ext4_super_block``:
20*8a98ec7cSDarrick J. Wong
21*8a98ec7cSDarrick J. Wong.. list-table::
22*8a98ec7cSDarrick J. Wong   :widths: 8 8 24 40
23*8a98ec7cSDarrick J. Wong   :header-rows: 1
24*8a98ec7cSDarrick J. Wong
25*8a98ec7cSDarrick J. Wong   * - Offset
26*8a98ec7cSDarrick J. Wong     - Size
27*8a98ec7cSDarrick J. Wong     - Name
28*8a98ec7cSDarrick J. Wong     - Description
29*8a98ec7cSDarrick J. Wong   * - 0x0
30*8a98ec7cSDarrick J. Wong     - \_\_le32
31*8a98ec7cSDarrick J. Wong     - s\_inodes\_count
32*8a98ec7cSDarrick J. Wong     - Total inode count.
33*8a98ec7cSDarrick J. Wong   * - 0x4
34*8a98ec7cSDarrick J. Wong     - \_\_le32
35*8a98ec7cSDarrick J. Wong     - s\_blocks\_count\_lo
36*8a98ec7cSDarrick J. Wong     - Total block count.
37*8a98ec7cSDarrick J. Wong   * - 0x8
38*8a98ec7cSDarrick J. Wong     - \_\_le32
39*8a98ec7cSDarrick J. Wong     - s\_r\_blocks\_count\_lo
40*8a98ec7cSDarrick J. Wong     - This number of blocks can only be allocated by the super-user.
41*8a98ec7cSDarrick J. Wong   * - 0xC
42*8a98ec7cSDarrick J. Wong     - \_\_le32
43*8a98ec7cSDarrick J. Wong     - s\_free\_blocks\_count\_lo
44*8a98ec7cSDarrick J. Wong     - Free block count.
45*8a98ec7cSDarrick J. Wong   * - 0x10
46*8a98ec7cSDarrick J. Wong     - \_\_le32
47*8a98ec7cSDarrick J. Wong     - s\_free\_inodes\_count
48*8a98ec7cSDarrick J. Wong     - Free inode count.
49*8a98ec7cSDarrick J. Wong   * - 0x14
50*8a98ec7cSDarrick J. Wong     - \_\_le32
51*8a98ec7cSDarrick J. Wong     - s\_first\_data\_block
52*8a98ec7cSDarrick J. Wong     - First data block. This must be at least 1 for 1k-block filesystems and
53*8a98ec7cSDarrick J. Wong       is typically 0 for all other block sizes.
54*8a98ec7cSDarrick J. Wong   * - 0x18
55*8a98ec7cSDarrick J. Wong     - \_\_le32
56*8a98ec7cSDarrick J. Wong     - s\_log\_block\_size
57*8a98ec7cSDarrick J. Wong     - Block size is 2 ^ (10 + s\_log\_block\_size).
58*8a98ec7cSDarrick J. Wong   * - 0x1C
59*8a98ec7cSDarrick J. Wong     - \_\_le32
60*8a98ec7cSDarrick J. Wong     - s\_log\_cluster\_size
61*8a98ec7cSDarrick J. Wong     - Cluster size is (2 ^ s\_log\_cluster\_size) blocks if bigalloc is
62*8a98ec7cSDarrick J. Wong       enabled. Otherwise s\_log\_cluster\_size must equal s\_log\_block\_size.
63*8a98ec7cSDarrick J. Wong   * - 0x20
64*8a98ec7cSDarrick J. Wong     - \_\_le32
65*8a98ec7cSDarrick J. Wong     - s\_blocks\_per\_group
66*8a98ec7cSDarrick J. Wong     - Blocks per group.
67*8a98ec7cSDarrick J. Wong   * - 0x24
68*8a98ec7cSDarrick J. Wong     - \_\_le32
69*8a98ec7cSDarrick J. Wong     - s\_clusters\_per\_group
70*8a98ec7cSDarrick J. Wong     - Clusters per group, if bigalloc is enabled. Otherwise
71*8a98ec7cSDarrick J. Wong       s\_clusters\_per\_group must equal s\_blocks\_per\_group.
72*8a98ec7cSDarrick J. Wong   * - 0x28
73*8a98ec7cSDarrick J. Wong     - \_\_le32
74*8a98ec7cSDarrick J. Wong     - s\_inodes\_per\_group
75*8a98ec7cSDarrick J. Wong     - Inodes per group.
76*8a98ec7cSDarrick J. Wong   * - 0x2C
77*8a98ec7cSDarrick J. Wong     - \_\_le32
78*8a98ec7cSDarrick J. Wong     - s\_mtime
79*8a98ec7cSDarrick J. Wong     - Mount time, in seconds since the epoch.
80*8a98ec7cSDarrick J. Wong   * - 0x30
81*8a98ec7cSDarrick J. Wong     - \_\_le32
82*8a98ec7cSDarrick J. Wong     - s\_wtime
83*8a98ec7cSDarrick J. Wong     - Write time, in seconds since the epoch.
84*8a98ec7cSDarrick J. Wong   * - 0x34
85*8a98ec7cSDarrick J. Wong     - \_\_le16
86*8a98ec7cSDarrick J. Wong     - s\_mnt\_count
87*8a98ec7cSDarrick J. Wong     - Number of mounts since the last fsck.
88*8a98ec7cSDarrick J. Wong   * - 0x36
89*8a98ec7cSDarrick J. Wong     - \_\_le16
90*8a98ec7cSDarrick J. Wong     - s\_max\_mnt\_count
91*8a98ec7cSDarrick J. Wong     - Number of mounts beyond which a fsck is needed.
92*8a98ec7cSDarrick J. Wong   * - 0x38
93*8a98ec7cSDarrick J. Wong     - \_\_le16
94*8a98ec7cSDarrick J. Wong     - s\_magic
95*8a98ec7cSDarrick J. Wong     - Magic signature, 0xEF53
96*8a98ec7cSDarrick J. Wong   * - 0x3A
97*8a98ec7cSDarrick J. Wong     - \_\_le16
98*8a98ec7cSDarrick J. Wong     - s\_state
99*8a98ec7cSDarrick J. Wong     - File system state. See super_state_ for more info.
100*8a98ec7cSDarrick J. Wong   * - 0x3C
101*8a98ec7cSDarrick J. Wong     - \_\_le16
102*8a98ec7cSDarrick J. Wong     - s\_errors
103*8a98ec7cSDarrick J. Wong     - Behaviour when detecting errors. See super_errors_ for more info.
104*8a98ec7cSDarrick J. Wong   * - 0x3E
105*8a98ec7cSDarrick J. Wong     - \_\_le16
106*8a98ec7cSDarrick J. Wong     - s\_minor\_rev\_level
107*8a98ec7cSDarrick J. Wong     - Minor revision level.
108*8a98ec7cSDarrick J. Wong   * - 0x40
109*8a98ec7cSDarrick J. Wong     - \_\_le32
110*8a98ec7cSDarrick J. Wong     - s\_lastcheck
111*8a98ec7cSDarrick J. Wong     - Time of last check, in seconds since the epoch.
112*8a98ec7cSDarrick J. Wong   * - 0x44
113*8a98ec7cSDarrick J. Wong     - \_\_le32
114*8a98ec7cSDarrick J. Wong     - s\_checkinterval
115*8a98ec7cSDarrick J. Wong     - Maximum time between checks, in seconds.
116*8a98ec7cSDarrick J. Wong   * - 0x48
117*8a98ec7cSDarrick J. Wong     - \_\_le32
118*8a98ec7cSDarrick J. Wong     - s\_creator\_os
119*8a98ec7cSDarrick J. Wong     - Creator OS. See the table super_creator_ for more info.
120*8a98ec7cSDarrick J. Wong   * - 0x4C
121*8a98ec7cSDarrick J. Wong     - \_\_le32
122*8a98ec7cSDarrick J. Wong     - s\_rev\_level
123*8a98ec7cSDarrick J. Wong     - Revision level. See the table super_revision_ for more info.
124*8a98ec7cSDarrick J. Wong   * - 0x50
125*8a98ec7cSDarrick J. Wong     - \_\_le16
126*8a98ec7cSDarrick J. Wong     - s\_def\_resuid
127*8a98ec7cSDarrick J. Wong     - Default uid for reserved blocks.
128*8a98ec7cSDarrick J. Wong   * - 0x52
129*8a98ec7cSDarrick J. Wong     - \_\_le16
130*8a98ec7cSDarrick J. Wong     - s\_def\_resgid
131*8a98ec7cSDarrick J. Wong     - Default gid for reserved blocks.
132*8a98ec7cSDarrick J. Wong   * -
133*8a98ec7cSDarrick J. Wong     -
134*8a98ec7cSDarrick J. Wong     -
135*8a98ec7cSDarrick J. Wong     - These fields are for EXT4_DYNAMIC_REV superblocks only.
136*8a98ec7cSDarrick J. Wong
137*8a98ec7cSDarrick J. Wong       Note: the difference between the compatible feature set and the
138*8a98ec7cSDarrick J. Wong       incompatible feature set is that if there is a bit set in the
139*8a98ec7cSDarrick J. Wong       incompatible feature set that the kernel doesn't know about, it should
140*8a98ec7cSDarrick J. Wong       refuse to mount the filesystem.
141*8a98ec7cSDarrick J. Wong
142*8a98ec7cSDarrick J. Wong       e2fsck's requirements are more strict; if it doesn't know
143*8a98ec7cSDarrick J. Wong       about a feature in either the compatible or incompatible feature set, it
144*8a98ec7cSDarrick J. Wong       must abort and not try to meddle with things it doesn't understand...
145*8a98ec7cSDarrick J. Wong   * - 0x54
146*8a98ec7cSDarrick J. Wong     - \_\_le32
147*8a98ec7cSDarrick J. Wong     - s\_first\_ino
148*8a98ec7cSDarrick J. Wong     - First non-reserved inode.
149*8a98ec7cSDarrick J. Wong   * - 0x58
150*8a98ec7cSDarrick J. Wong     - \_\_le16
151*8a98ec7cSDarrick J. Wong     - s\_inode\_size
152*8a98ec7cSDarrick J. Wong     - Size of inode structure, in bytes.
153*8a98ec7cSDarrick J. Wong   * - 0x5A
154*8a98ec7cSDarrick J. Wong     - \_\_le16
155*8a98ec7cSDarrick J. Wong     - s\_block\_group\_nr
156*8a98ec7cSDarrick J. Wong     - Block group # of this superblock.
157*8a98ec7cSDarrick J. Wong   * - 0x5C
158*8a98ec7cSDarrick J. Wong     - \_\_le32
159*8a98ec7cSDarrick J. Wong     - s\_feature\_compat
160*8a98ec7cSDarrick J. Wong     - Compatible feature set flags. Kernel can still read/write this fs even
161*8a98ec7cSDarrick J. Wong       if it doesn't understand a flag; fsck should not do that. See the
162*8a98ec7cSDarrick J. Wong       super_compat_ table for more info.
163*8a98ec7cSDarrick J. Wong   * - 0x60
164*8a98ec7cSDarrick J. Wong     - \_\_le32
165*8a98ec7cSDarrick J. Wong     - s\_feature\_incompat
166*8a98ec7cSDarrick J. Wong     - Incompatible feature set. If the kernel or fsck doesn't understand one
167*8a98ec7cSDarrick J. Wong       of these bits, it should stop. See the super_incompat_ table for more
168*8a98ec7cSDarrick J. Wong       info.
169*8a98ec7cSDarrick J. Wong   * - 0x64
170*8a98ec7cSDarrick J. Wong     - \_\_le32
171*8a98ec7cSDarrick J. Wong     - s\_feature\_ro\_compat
172*8a98ec7cSDarrick J. Wong     - Readonly-compatible feature set. If the kernel doesn't understand one of
173*8a98ec7cSDarrick J. Wong       these bits, it can still mount read-only. See the super_rocompat_ table
174*8a98ec7cSDarrick J. Wong       for more info.
175*8a98ec7cSDarrick J. Wong   * - 0x68
176*8a98ec7cSDarrick J. Wong     - \_\_u8
177*8a98ec7cSDarrick J. Wong     - s\_uuid[16]
178*8a98ec7cSDarrick J. Wong     - 128-bit UUID for volume.
179*8a98ec7cSDarrick J. Wong   * - 0x78
180*8a98ec7cSDarrick J. Wong     - char
181*8a98ec7cSDarrick J. Wong     - s\_volume\_name[16]
182*8a98ec7cSDarrick J. Wong     - Volume label.
183*8a98ec7cSDarrick J. Wong   * - 0x88
184*8a98ec7cSDarrick J. Wong     - char
185*8a98ec7cSDarrick J. Wong     - s\_last\_mounted[64]
186*8a98ec7cSDarrick J. Wong     - Directory where filesystem was last mounted.
187*8a98ec7cSDarrick J. Wong   * - 0xC8
188*8a98ec7cSDarrick J. Wong     - \_\_le32
189*8a98ec7cSDarrick J. Wong     - s\_algorithm\_usage\_bitmap
190*8a98ec7cSDarrick J. Wong     - For compression (Not used in e2fsprogs/Linux)
191*8a98ec7cSDarrick J. Wong   * -
192*8a98ec7cSDarrick J. Wong     -
193*8a98ec7cSDarrick J. Wong     -
194*8a98ec7cSDarrick J. Wong     - Performance hints.  Directory preallocation should only happen if the
195*8a98ec7cSDarrick J. Wong       EXT4_FEATURE_COMPAT_DIR_PREALLOC flag is on.
196*8a98ec7cSDarrick J. Wong   * - 0xCC
197*8a98ec7cSDarrick J. Wong     - \_\_u8
198*8a98ec7cSDarrick J. Wong     - s\_prealloc\_blocks
199*8a98ec7cSDarrick J. Wong     - #. of blocks to try to preallocate for ... files? (Not used in
200*8a98ec7cSDarrick J. Wong       e2fsprogs/Linux)
201*8a98ec7cSDarrick J. Wong   * - 0xCD
202*8a98ec7cSDarrick J. Wong     - \_\_u8
203*8a98ec7cSDarrick J. Wong     - s\_prealloc\_dir\_blocks
204*8a98ec7cSDarrick J. Wong     - #. of blocks to preallocate for directories. (Not used in
205*8a98ec7cSDarrick J. Wong       e2fsprogs/Linux)
206*8a98ec7cSDarrick J. Wong   * - 0xCE
207*8a98ec7cSDarrick J. Wong     - \_\_le16
208*8a98ec7cSDarrick J. Wong     - s\_reserved\_gdt\_blocks
209*8a98ec7cSDarrick J. Wong     - Number of reserved GDT entries for future filesystem expansion.
210*8a98ec7cSDarrick J. Wong   * -
211*8a98ec7cSDarrick J. Wong     -
212*8a98ec7cSDarrick J. Wong     -
213*8a98ec7cSDarrick J. Wong     - Journalling support is valid only if EXT4_FEATURE_COMPAT_HAS_JOURNAL is
214*8a98ec7cSDarrick J. Wong       set.
215*8a98ec7cSDarrick J. Wong   * - 0xD0
216*8a98ec7cSDarrick J. Wong     - \_\_u8
217*8a98ec7cSDarrick J. Wong     - s\_journal\_uuid[16]
218*8a98ec7cSDarrick J. Wong     - UUID of journal superblock
219*8a98ec7cSDarrick J. Wong   * - 0xE0
220*8a98ec7cSDarrick J. Wong     - \_\_le32
221*8a98ec7cSDarrick J. Wong     - s\_journal\_inum
222*8a98ec7cSDarrick J. Wong     - inode number of journal file.
223*8a98ec7cSDarrick J. Wong   * - 0xE4
224*8a98ec7cSDarrick J. Wong     - \_\_le32
225*8a98ec7cSDarrick J. Wong     - s\_journal\_dev
226*8a98ec7cSDarrick J. Wong     - Device number of journal file, if the external journal feature flag is
227*8a98ec7cSDarrick J. Wong       set.
228*8a98ec7cSDarrick J. Wong   * - 0xE8
229*8a98ec7cSDarrick J. Wong     - \_\_le32
230*8a98ec7cSDarrick J. Wong     - s\_last\_orphan
231*8a98ec7cSDarrick J. Wong     - Start of list of orphaned inodes to delete.
232*8a98ec7cSDarrick J. Wong   * - 0xEC
233*8a98ec7cSDarrick J. Wong     - \_\_le32
234*8a98ec7cSDarrick J. Wong     - s\_hash\_seed[4]
235*8a98ec7cSDarrick J. Wong     - HTREE hash seed.
236*8a98ec7cSDarrick J. Wong   * - 0xFC
237*8a98ec7cSDarrick J. Wong     - \_\_u8
238*8a98ec7cSDarrick J. Wong     - s\_def\_hash\_version
239*8a98ec7cSDarrick J. Wong     - Default hash algorithm to use for directory hashes. See super_def_hash_
240*8a98ec7cSDarrick J. Wong       for more info.
241*8a98ec7cSDarrick J. Wong   * - 0xFD
242*8a98ec7cSDarrick J. Wong     - \_\_u8
243*8a98ec7cSDarrick J. Wong     - s\_jnl\_backup\_type
244*8a98ec7cSDarrick J. Wong     - If this value is 0 or EXT3\_JNL\_BACKUP\_BLOCKS (1), then the
245*8a98ec7cSDarrick J. Wong       ``s_jnl_blocks`` field contains a duplicate copy of the inode's
246*8a98ec7cSDarrick J. Wong       ``i_block[]`` array and ``i_size``.
247*8a98ec7cSDarrick J. Wong   * - 0xFE
248*8a98ec7cSDarrick J. Wong     - \_\_le16
249*8a98ec7cSDarrick J. Wong     - s\_desc\_size
250*8a98ec7cSDarrick J. Wong     - Size of group descriptors, in bytes, if the 64bit incompat feature flag
251*8a98ec7cSDarrick J. Wong       is set.
252*8a98ec7cSDarrick J. Wong   * - 0x100
253*8a98ec7cSDarrick J. Wong     - \_\_le32
254*8a98ec7cSDarrick J. Wong     - s\_default\_mount\_opts
255*8a98ec7cSDarrick J. Wong     - Default mount options. See the super_mountopts_ table for more info.
256*8a98ec7cSDarrick J. Wong   * - 0x104
257*8a98ec7cSDarrick J. Wong     - \_\_le32
258*8a98ec7cSDarrick J. Wong     - s\_first\_meta\_bg
259*8a98ec7cSDarrick J. Wong     - First metablock block group, if the meta\_bg feature is enabled.
260*8a98ec7cSDarrick J. Wong   * - 0x108
261*8a98ec7cSDarrick J. Wong     - \_\_le32
262*8a98ec7cSDarrick J. Wong     - s\_mkfs\_time
263*8a98ec7cSDarrick J. Wong     - When the filesystem was created, in seconds since the epoch.
264*8a98ec7cSDarrick J. Wong   * - 0x10C
265*8a98ec7cSDarrick J. Wong     - \_\_le32
266*8a98ec7cSDarrick J. Wong     - s\_jnl\_blocks[17]
267*8a98ec7cSDarrick J. Wong     - Backup copy of the journal inode's ``i_block[]`` array in the first 15
268*8a98ec7cSDarrick J. Wong       elements and i\_size\_high and i\_size in the 16th and 17th elements,
269*8a98ec7cSDarrick J. Wong       respectively.
270*8a98ec7cSDarrick J. Wong   * -
271*8a98ec7cSDarrick J. Wong     -
272*8a98ec7cSDarrick J. Wong     -
273*8a98ec7cSDarrick J. Wong     - 64bit support is valid only if EXT4_FEATURE_COMPAT_64BIT is set.
274*8a98ec7cSDarrick J. Wong   * - 0x150
275*8a98ec7cSDarrick J. Wong     - \_\_le32
276*8a98ec7cSDarrick J. Wong     - s\_blocks\_count\_hi
277*8a98ec7cSDarrick J. Wong     - High 32-bits of the block count.
278*8a98ec7cSDarrick J. Wong   * - 0x154
279*8a98ec7cSDarrick J. Wong     - \_\_le32
280*8a98ec7cSDarrick J. Wong     - s\_r\_blocks\_count\_hi
281*8a98ec7cSDarrick J. Wong     - High 32-bits of the reserved block count.
282*8a98ec7cSDarrick J. Wong   * - 0x158
283*8a98ec7cSDarrick J. Wong     - \_\_le32
284*8a98ec7cSDarrick J. Wong     - s\_free\_blocks\_count\_hi
285*8a98ec7cSDarrick J. Wong     - High 32-bits of the free block count.
286*8a98ec7cSDarrick J. Wong   * - 0x15C
287*8a98ec7cSDarrick J. Wong     - \_\_le16
288*8a98ec7cSDarrick J. Wong     - s\_min\_extra\_isize
289*8a98ec7cSDarrick J. Wong     - All inodes have at least # bytes.
290*8a98ec7cSDarrick J. Wong   * - 0x15E
291*8a98ec7cSDarrick J. Wong     - \_\_le16
292*8a98ec7cSDarrick J. Wong     - s\_want\_extra\_isize
293*8a98ec7cSDarrick J. Wong     - New inodes should reserve # bytes.
294*8a98ec7cSDarrick J. Wong   * - 0x160
295*8a98ec7cSDarrick J. Wong     - \_\_le32
296*8a98ec7cSDarrick J. Wong     - s\_flags
297*8a98ec7cSDarrick J. Wong     - Miscellaneous flags. See the super_flags_ table for more info.
298*8a98ec7cSDarrick J. Wong   * - 0x164
299*8a98ec7cSDarrick J. Wong     - \_\_le16
300*8a98ec7cSDarrick J. Wong     - s\_raid\_stride
301*8a98ec7cSDarrick J. Wong     - RAID stride. This is the number of logical blocks read from or written
302*8a98ec7cSDarrick J. Wong       to the disk before moving to the next disk. This affects the placement
303*8a98ec7cSDarrick J. Wong       of filesystem metadata, which will hopefully make RAID storage faster.
304*8a98ec7cSDarrick J. Wong   * - 0x166
305*8a98ec7cSDarrick J. Wong     - \_\_le16
306*8a98ec7cSDarrick J. Wong     - s\_mmp\_interval
307*8a98ec7cSDarrick J. Wong     - #. seconds to wait in multi-mount prevention (MMP) checking. In theory,
308*8a98ec7cSDarrick J. Wong       MMP is a mechanism to record in the superblock which host and device
309*8a98ec7cSDarrick J. Wong       have mounted the filesystem, in order to prevent multiple mounts. This
310*8a98ec7cSDarrick J. Wong       feature does not seem to be implemented...
311*8a98ec7cSDarrick J. Wong   * - 0x168
312*8a98ec7cSDarrick J. Wong     - \_\_le64
313*8a98ec7cSDarrick J. Wong     - s\_mmp\_block
314*8a98ec7cSDarrick J. Wong     - Block # for multi-mount protection data.
315*8a98ec7cSDarrick J. Wong   * - 0x170
316*8a98ec7cSDarrick J. Wong     - \_\_le32
317*8a98ec7cSDarrick J. Wong     - s\_raid\_stripe\_width
318*8a98ec7cSDarrick J. Wong     - RAID stripe width. This is the number of logical blocks read from or
319*8a98ec7cSDarrick J. Wong       written to the disk before coming back to the current disk. This is used
320*8a98ec7cSDarrick J. Wong       by the block allocator to try to reduce the number of read-modify-write
321*8a98ec7cSDarrick J. Wong       operations in a RAID5/6.
322*8a98ec7cSDarrick J. Wong   * - 0x174
323*8a98ec7cSDarrick J. Wong     - \_\_u8
324*8a98ec7cSDarrick J. Wong     - s\_log\_groups\_per\_flex
325*8a98ec7cSDarrick J. Wong     - Size of a flexible block group is 2 ^ ``s_log_groups_per_flex``.
326*8a98ec7cSDarrick J. Wong   * - 0x175
327*8a98ec7cSDarrick J. Wong     - \_\_u8
328*8a98ec7cSDarrick J. Wong     - s\_checksum\_type
329*8a98ec7cSDarrick J. Wong     - Metadata checksum algorithm type. The only valid value is 1 (crc32c).
330*8a98ec7cSDarrick J. Wong   * - 0x176
331*8a98ec7cSDarrick J. Wong     - \_\_le16
332*8a98ec7cSDarrick J. Wong     - s\_reserved\_pad
333*8a98ec7cSDarrick J. Wong     -
334*8a98ec7cSDarrick J. Wong   * - 0x178
335*8a98ec7cSDarrick J. Wong     - \_\_le64
336*8a98ec7cSDarrick J. Wong     - s\_kbytes\_written
337*8a98ec7cSDarrick J. Wong     - Number of KiB written to this filesystem over its lifetime.
338*8a98ec7cSDarrick J. Wong   * - 0x180
339*8a98ec7cSDarrick J. Wong     - \_\_le32
340*8a98ec7cSDarrick J. Wong     - s\_snapshot\_inum
341*8a98ec7cSDarrick J. Wong     - inode number of active snapshot. (Not used in e2fsprogs/Linux.)
342*8a98ec7cSDarrick J. Wong   * - 0x184
343*8a98ec7cSDarrick J. Wong     - \_\_le32
344*8a98ec7cSDarrick J. Wong     - s\_snapshot\_id
345*8a98ec7cSDarrick J. Wong     - Sequential ID of active snapshot. (Not used in e2fsprogs/Linux.)
346*8a98ec7cSDarrick J. Wong   * - 0x188
347*8a98ec7cSDarrick J. Wong     - \_\_le64
348*8a98ec7cSDarrick J. Wong     - s\_snapshot\_r\_blocks\_count
349*8a98ec7cSDarrick J. Wong     - Number of blocks reserved for active snapshot's future use. (Not used in
350*8a98ec7cSDarrick J. Wong       e2fsprogs/Linux.)
351*8a98ec7cSDarrick J. Wong   * - 0x190
352*8a98ec7cSDarrick J. Wong     - \_\_le32
353*8a98ec7cSDarrick J. Wong     - s\_snapshot\_list
354*8a98ec7cSDarrick J. Wong     - inode number of the head of the on-disk snapshot list. (Not used in
355*8a98ec7cSDarrick J. Wong       e2fsprogs/Linux.)
356*8a98ec7cSDarrick J. Wong   * - 0x194
357*8a98ec7cSDarrick J. Wong     - \_\_le32
358*8a98ec7cSDarrick J. Wong     - s\_error\_count
359*8a98ec7cSDarrick J. Wong     - Number of errors seen.
360*8a98ec7cSDarrick J. Wong   * - 0x198
361*8a98ec7cSDarrick J. Wong     - \_\_le32
362*8a98ec7cSDarrick J. Wong     - s\_first\_error\_time
363*8a98ec7cSDarrick J. Wong     - First time an error happened, in seconds since the epoch.
364*8a98ec7cSDarrick J. Wong   * - 0x19C
365*8a98ec7cSDarrick J. Wong     - \_\_le32
366*8a98ec7cSDarrick J. Wong     - s\_first\_error\_ino
367*8a98ec7cSDarrick J. Wong     - inode involved in first error.
368*8a98ec7cSDarrick J. Wong   * - 0x1A0
369*8a98ec7cSDarrick J. Wong     - \_\_le64
370*8a98ec7cSDarrick J. Wong     - s\_first\_error\_block
371*8a98ec7cSDarrick J. Wong     - Number of block involved of first error.
372*8a98ec7cSDarrick J. Wong   * - 0x1A8
373*8a98ec7cSDarrick J. Wong     - \_\_u8
374*8a98ec7cSDarrick J. Wong     - s\_first\_error\_func[32]
375*8a98ec7cSDarrick J. Wong     - Name of function where the error happened.
376*8a98ec7cSDarrick J. Wong   * - 0x1C8
377*8a98ec7cSDarrick J. Wong     - \_\_le32
378*8a98ec7cSDarrick J. Wong     - s\_first\_error\_line
379*8a98ec7cSDarrick J. Wong     - Line number where error happened.
380*8a98ec7cSDarrick J. Wong   * - 0x1CC
381*8a98ec7cSDarrick J. Wong     - \_\_le32
382*8a98ec7cSDarrick J. Wong     - s\_last\_error\_time
383*8a98ec7cSDarrick J. Wong     - Time of most recent error, in seconds since the epoch.
384*8a98ec7cSDarrick J. Wong   * - 0x1D0
385*8a98ec7cSDarrick J. Wong     - \_\_le32
386*8a98ec7cSDarrick J. Wong     - s\_last\_error\_ino
387*8a98ec7cSDarrick J. Wong     - inode involved in most recent error.
388*8a98ec7cSDarrick J. Wong   * - 0x1D4
389*8a98ec7cSDarrick J. Wong     - \_\_le32
390*8a98ec7cSDarrick J. Wong     - s\_last\_error\_line
391*8a98ec7cSDarrick J. Wong     - Line number where most recent error happened.
392*8a98ec7cSDarrick J. Wong   * - 0x1D8
393*8a98ec7cSDarrick J. Wong     - \_\_le64
394*8a98ec7cSDarrick J. Wong     - s\_last\_error\_block
395*8a98ec7cSDarrick J. Wong     - Number of block involved in most recent error.
396*8a98ec7cSDarrick J. Wong   * - 0x1E0
397*8a98ec7cSDarrick J. Wong     - \_\_u8
398*8a98ec7cSDarrick J. Wong     - s\_last\_error\_func[32]
399*8a98ec7cSDarrick J. Wong     - Name of function where the most recent error happened.
400*8a98ec7cSDarrick J. Wong   * - 0x200
401*8a98ec7cSDarrick J. Wong     - \_\_u8
402*8a98ec7cSDarrick J. Wong     - s\_mount\_opts[64]
403*8a98ec7cSDarrick J. Wong     - ASCIIZ string of mount options.
404*8a98ec7cSDarrick J. Wong   * - 0x240
405*8a98ec7cSDarrick J. Wong     - \_\_le32
406*8a98ec7cSDarrick J. Wong     - s\_usr\_quota\_inum
407*8a98ec7cSDarrick J. Wong     - Inode number of user `quota <quota>`__ file.
408*8a98ec7cSDarrick J. Wong   * - 0x244
409*8a98ec7cSDarrick J. Wong     - \_\_le32
410*8a98ec7cSDarrick J. Wong     - s\_grp\_quota\_inum
411*8a98ec7cSDarrick J. Wong     - Inode number of group `quota <quota>`__ file.
412*8a98ec7cSDarrick J. Wong   * - 0x248
413*8a98ec7cSDarrick J. Wong     - \_\_le32
414*8a98ec7cSDarrick J. Wong     - s\_overhead\_blocks
415*8a98ec7cSDarrick J. Wong     - Overhead blocks/clusters in fs. (Huh? This field is always zero, which
416*8a98ec7cSDarrick J. Wong       means that the kernel calculates it dynamically.)
417*8a98ec7cSDarrick J. Wong   * - 0x24C
418*8a98ec7cSDarrick J. Wong     - \_\_le32
419*8a98ec7cSDarrick J. Wong     - s\_backup\_bgs[2]
420*8a98ec7cSDarrick J. Wong     - Block groups containing superblock backups (if sparse\_super2)
421*8a98ec7cSDarrick J. Wong   * - 0x254
422*8a98ec7cSDarrick J. Wong     - \_\_u8
423*8a98ec7cSDarrick J. Wong     - s\_encrypt\_algos[4]
424*8a98ec7cSDarrick J. Wong     - Encryption algorithms in use. There can be up to four algorithms in use
425*8a98ec7cSDarrick J. Wong       at any time; valid algorithm codes are given in the super_encrypt_ table
426*8a98ec7cSDarrick J. Wong       below.
427*8a98ec7cSDarrick J. Wong   * - 0x258
428*8a98ec7cSDarrick J. Wong     - \_\_u8
429*8a98ec7cSDarrick J. Wong     - s\_encrypt\_pw\_salt[16]
430*8a98ec7cSDarrick J. Wong     - Salt for the string2key algorithm for encryption.
431*8a98ec7cSDarrick J. Wong   * - 0x268
432*8a98ec7cSDarrick J. Wong     - \_\_le32
433*8a98ec7cSDarrick J. Wong     - s\_lpf\_ino
434*8a98ec7cSDarrick J. Wong     - Inode number of lost+found
435*8a98ec7cSDarrick J. Wong   * - 0x26C
436*8a98ec7cSDarrick J. Wong     - \_\_le32
437*8a98ec7cSDarrick J. Wong     - s\_prj\_quota\_inum
438*8a98ec7cSDarrick J. Wong     - Inode that tracks project quotas.
439*8a98ec7cSDarrick J. Wong   * - 0x270
440*8a98ec7cSDarrick J. Wong     - \_\_le32
441*8a98ec7cSDarrick J. Wong     - s\_checksum\_seed
442*8a98ec7cSDarrick J. Wong     - Checksum seed used for metadata\_csum calculations. This value is
443*8a98ec7cSDarrick J. Wong       crc32c(~0, $orig\_fs\_uuid).
444*8a98ec7cSDarrick J. Wong   * - 0x274
445*8a98ec7cSDarrick J. Wong     - \_\_u8
446*8a98ec7cSDarrick J. Wong     - s\_wtime_hi
447*8a98ec7cSDarrick J. Wong     - Upper 8 bits of the s_wtime field.
448*8a98ec7cSDarrick J. Wong   * - 0x275
449*8a98ec7cSDarrick J. Wong     - \_\_u8
450*8a98ec7cSDarrick J. Wong     - s\_wtime_hi
451*8a98ec7cSDarrick J. Wong     - Upper 8 bits of the s_mtime field.
452*8a98ec7cSDarrick J. Wong   * - 0x276
453*8a98ec7cSDarrick J. Wong     - \_\_u8
454*8a98ec7cSDarrick J. Wong     - s\_mkfs_time_hi
455*8a98ec7cSDarrick J. Wong     - Upper 8 bits of the s_mkfs_time field.
456*8a98ec7cSDarrick J. Wong   * - 0x277
457*8a98ec7cSDarrick J. Wong     - \_\_u8
458*8a98ec7cSDarrick J. Wong     - s\_lastcheck_hi
459*8a98ec7cSDarrick J. Wong     - Upper 8 bits of the s_lastcheck_hi field.
460*8a98ec7cSDarrick J. Wong   * - 0x278
461*8a98ec7cSDarrick J. Wong     - \_\_u8
462*8a98ec7cSDarrick J. Wong     - s\_first_error_time_hi
463*8a98ec7cSDarrick J. Wong     - Upper 8 bits of the s_first_error_time_hi field.
464*8a98ec7cSDarrick J. Wong   * - 0x279
465*8a98ec7cSDarrick J. Wong     - \_\_u8
466*8a98ec7cSDarrick J. Wong     - s\_last_error_time_hi
467*8a98ec7cSDarrick J. Wong     - Upper 8 bits of the s_last_error_time_hi field.
468*8a98ec7cSDarrick J. Wong   * - 0x27A
469*8a98ec7cSDarrick J. Wong     - \_\_u8[2]
470*8a98ec7cSDarrick J. Wong     - s\_pad
471*8a98ec7cSDarrick J. Wong     - Zero padding.
472*8a98ec7cSDarrick J. Wong   * - 0x27C
473*8a98ec7cSDarrick J. Wong     - \_\_le32
474*8a98ec7cSDarrick J. Wong     - s\_reserved[96]
475*8a98ec7cSDarrick J. Wong     - Padding to the end of the block.
476*8a98ec7cSDarrick J. Wong   * - 0x3FC
477*8a98ec7cSDarrick J. Wong     - \_\_le32
478*8a98ec7cSDarrick J. Wong     - s\_checksum
479*8a98ec7cSDarrick J. Wong     - Superblock checksum.
480*8a98ec7cSDarrick J. Wong
481*8a98ec7cSDarrick J. Wong.. _super_state:
482*8a98ec7cSDarrick J. Wong
483*8a98ec7cSDarrick J. WongThe superblock state is some combination of the following:
484*8a98ec7cSDarrick J. Wong
485*8a98ec7cSDarrick J. Wong.. list-table::
486*8a98ec7cSDarrick J. Wong   :widths: 8 72
487*8a98ec7cSDarrick J. Wong   :header-rows: 1
488*8a98ec7cSDarrick J. Wong
489*8a98ec7cSDarrick J. Wong   * - Value
490*8a98ec7cSDarrick J. Wong     - Description
491*8a98ec7cSDarrick J. Wong   * - 0x0001
492*8a98ec7cSDarrick J. Wong     - Cleanly umounted
493*8a98ec7cSDarrick J. Wong   * - 0x0002
494*8a98ec7cSDarrick J. Wong     - Errors detected
495*8a98ec7cSDarrick J. Wong   * - 0x0004
496*8a98ec7cSDarrick J. Wong     - Orphans being recovered
497*8a98ec7cSDarrick J. Wong
498*8a98ec7cSDarrick J. Wong.. _super_errors:
499*8a98ec7cSDarrick J. Wong
500*8a98ec7cSDarrick J. WongThe superblock error policy is one of the following:
501*8a98ec7cSDarrick J. Wong
502*8a98ec7cSDarrick J. Wong.. list-table::
503*8a98ec7cSDarrick J. Wong   :widths: 8 72
504*8a98ec7cSDarrick J. Wong   :header-rows: 1
505*8a98ec7cSDarrick J. Wong
506*8a98ec7cSDarrick J. Wong   * - Value
507*8a98ec7cSDarrick J. Wong     - Description
508*8a98ec7cSDarrick J. Wong   * - 1
509*8a98ec7cSDarrick J. Wong     - Continue
510*8a98ec7cSDarrick J. Wong   * - 2
511*8a98ec7cSDarrick J. Wong     - Remount read-only
512*8a98ec7cSDarrick J. Wong   * - 3
513*8a98ec7cSDarrick J. Wong     - Panic
514*8a98ec7cSDarrick J. Wong
515*8a98ec7cSDarrick J. Wong.. _super_creator:
516*8a98ec7cSDarrick J. Wong
517*8a98ec7cSDarrick J. WongThe filesystem creator is one of the following:
518*8a98ec7cSDarrick J. Wong
519*8a98ec7cSDarrick J. Wong.. list-table::
520*8a98ec7cSDarrick J. Wong   :widths: 8 72
521*8a98ec7cSDarrick J. Wong   :header-rows: 1
522*8a98ec7cSDarrick J. Wong
523*8a98ec7cSDarrick J. Wong   * - Value
524*8a98ec7cSDarrick J. Wong     - Description
525*8a98ec7cSDarrick J. Wong   * - 0
526*8a98ec7cSDarrick J. Wong     - Linux
527*8a98ec7cSDarrick J. Wong   * - 1
528*8a98ec7cSDarrick J. Wong     - Hurd
529*8a98ec7cSDarrick J. Wong   * - 2
530*8a98ec7cSDarrick J. Wong     - Masix
531*8a98ec7cSDarrick J. Wong   * - 3
532*8a98ec7cSDarrick J. Wong     - FreeBSD
533*8a98ec7cSDarrick J. Wong   * - 4
534*8a98ec7cSDarrick J. Wong     - Lites
535*8a98ec7cSDarrick J. Wong
536*8a98ec7cSDarrick J. Wong.. _super_revision:
537*8a98ec7cSDarrick J. Wong
538*8a98ec7cSDarrick J. WongThe superblock revision is one of the following:
539*8a98ec7cSDarrick J. Wong
540*8a98ec7cSDarrick J. Wong.. list-table::
541*8a98ec7cSDarrick J. Wong   :widths: 8 72
542*8a98ec7cSDarrick J. Wong   :header-rows: 1
543*8a98ec7cSDarrick J. Wong
544*8a98ec7cSDarrick J. Wong   * - Value
545*8a98ec7cSDarrick J. Wong     - Description
546*8a98ec7cSDarrick J. Wong   * - 0
547*8a98ec7cSDarrick J. Wong     - Original format
548*8a98ec7cSDarrick J. Wong   * - 1
549*8a98ec7cSDarrick J. Wong     - v2 format w/ dynamic inode sizes
550*8a98ec7cSDarrick J. Wong
551*8a98ec7cSDarrick J. WongNote that ``EXT4_DYNAMIC_REV`` refers to a revision 1 or newer filesystem.
552*8a98ec7cSDarrick J. Wong
553*8a98ec7cSDarrick J. Wong.. _super_compat:
554*8a98ec7cSDarrick J. Wong
555*8a98ec7cSDarrick J. WongThe superblock compatible features field is a combination of any of the
556*8a98ec7cSDarrick J. Wongfollowing:
557*8a98ec7cSDarrick J. Wong
558*8a98ec7cSDarrick J. Wong.. list-table::
559*8a98ec7cSDarrick J. Wong   :widths: 16 64
560*8a98ec7cSDarrick J. Wong   :header-rows: 1
561*8a98ec7cSDarrick J. Wong
562*8a98ec7cSDarrick J. Wong   * - Value
563*8a98ec7cSDarrick J. Wong     - Description
564*8a98ec7cSDarrick J. Wong   * - 0x1
565*8a98ec7cSDarrick J. Wong     - Directory preallocation (COMPAT\_DIR\_PREALLOC).
566*8a98ec7cSDarrick J. Wong   * - 0x2
567*8a98ec7cSDarrick J. Wong     - “imagic inodes”. Not clear from the code what this does
568*8a98ec7cSDarrick J. Wong       (COMPAT\_IMAGIC\_INODES).
569*8a98ec7cSDarrick J. Wong   * - 0x4
570*8a98ec7cSDarrick J. Wong     - Has a journal (COMPAT\_HAS\_JOURNAL).
571*8a98ec7cSDarrick J. Wong   * - 0x8
572*8a98ec7cSDarrick J. Wong     - Supports extended attributes (COMPAT\_EXT\_ATTR).
573*8a98ec7cSDarrick J. Wong   * - 0x10
574*8a98ec7cSDarrick J. Wong     - Has reserved GDT blocks for filesystem expansion
575*8a98ec7cSDarrick J. Wong       (COMPAT\_RESIZE\_INODE). Requires RO\_COMPAT\_SPARSE\_SUPER.
576*8a98ec7cSDarrick J. Wong   * - 0x20
577*8a98ec7cSDarrick J. Wong     - Has directory indices (COMPAT\_DIR\_INDEX).
578*8a98ec7cSDarrick J. Wong   * - 0x40
579*8a98ec7cSDarrick J. Wong     - “Lazy BG”. Not in Linux kernel, seems to have been for uninitialized
580*8a98ec7cSDarrick J. Wong       block groups? (COMPAT\_LAZY\_BG)
581*8a98ec7cSDarrick J. Wong   * - 0x80
582*8a98ec7cSDarrick J. Wong     - “Exclude inode”. Not used. (COMPAT\_EXCLUDE\_INODE).
583*8a98ec7cSDarrick J. Wong   * - 0x100
584*8a98ec7cSDarrick J. Wong     - “Exclude bitmap”. Seems to be used to indicate the presence of
585*8a98ec7cSDarrick J. Wong       snapshot-related exclude bitmaps? Not defined in kernel or used in
586*8a98ec7cSDarrick J. Wong       e2fsprogs (COMPAT\_EXCLUDE\_BITMAP).
587*8a98ec7cSDarrick J. Wong   * - 0x200
588*8a98ec7cSDarrick J. Wong     - Sparse Super Block, v2. If this flag is set, the SB field s\_backup\_bgs
589*8a98ec7cSDarrick J. Wong       points to the two block groups that contain backup superblocks
590*8a98ec7cSDarrick J. Wong       (COMPAT\_SPARSE\_SUPER2).
591*8a98ec7cSDarrick J. Wong
592*8a98ec7cSDarrick J. Wong.. _super_incompat:
593*8a98ec7cSDarrick J. Wong
594*8a98ec7cSDarrick J. WongThe superblock incompatible features field is a combination of any of the
595*8a98ec7cSDarrick J. Wongfollowing:
596*8a98ec7cSDarrick J. Wong
597*8a98ec7cSDarrick J. Wong.. list-table::
598*8a98ec7cSDarrick J. Wong   :widths: 16 64
599*8a98ec7cSDarrick J. Wong   :header-rows: 1
600*8a98ec7cSDarrick J. Wong
601*8a98ec7cSDarrick J. Wong   * - Value
602*8a98ec7cSDarrick J. Wong     - Description
603*8a98ec7cSDarrick J. Wong   * - 0x1
604*8a98ec7cSDarrick J. Wong     - Compression (INCOMPAT\_COMPRESSION).
605*8a98ec7cSDarrick J. Wong   * - 0x2
606*8a98ec7cSDarrick J. Wong     - Directory entries record the file type. See ext4\_dir\_entry\_2 below
607*8a98ec7cSDarrick J. Wong       (INCOMPAT\_FILETYPE).
608*8a98ec7cSDarrick J. Wong   * - 0x4
609*8a98ec7cSDarrick J. Wong     - Filesystem needs recovery (INCOMPAT\_RECOVER).
610*8a98ec7cSDarrick J. Wong   * - 0x8
611*8a98ec7cSDarrick J. Wong     - Filesystem has a separate journal device (INCOMPAT\_JOURNAL\_DEV).
612*8a98ec7cSDarrick J. Wong   * - 0x10
613*8a98ec7cSDarrick J. Wong     - Meta block groups. See the earlier discussion of this feature
614*8a98ec7cSDarrick J. Wong       (INCOMPAT\_META\_BG).
615*8a98ec7cSDarrick J. Wong   * - 0x40
616*8a98ec7cSDarrick J. Wong     - Files in this filesystem use extents (INCOMPAT\_EXTENTS).
617*8a98ec7cSDarrick J. Wong   * - 0x80
618*8a98ec7cSDarrick J. Wong     - Enable a filesystem size of 2^64 blocks (INCOMPAT\_64BIT).
619*8a98ec7cSDarrick J. Wong   * - 0x100
620*8a98ec7cSDarrick J. Wong     - Multiple mount protection. Not implemented (INCOMPAT\_MMP).
621*8a98ec7cSDarrick J. Wong   * - 0x200
622*8a98ec7cSDarrick J. Wong     - Flexible block groups. See the earlier discussion of this feature
623*8a98ec7cSDarrick J. Wong       (INCOMPAT\_FLEX\_BG).
624*8a98ec7cSDarrick J. Wong   * - 0x400
625*8a98ec7cSDarrick J. Wong     - Inodes can be used to store large extended attribute values
626*8a98ec7cSDarrick J. Wong       (INCOMPAT\_EA\_INODE).
627*8a98ec7cSDarrick J. Wong   * - 0x1000
628*8a98ec7cSDarrick J. Wong     - Data in directory entry (INCOMPAT\_DIRDATA). (Not implemented?)
629*8a98ec7cSDarrick J. Wong   * - 0x2000
630*8a98ec7cSDarrick J. Wong     - Metadata checksum seed is stored in the superblock. This feature enables
631*8a98ec7cSDarrick J. Wong       the administrator to change the UUID of a metadata\_csum filesystem
632*8a98ec7cSDarrick J. Wong       while the filesystem is mounted; without it, the checksum definition
633*8a98ec7cSDarrick J. Wong       requires all metadata blocks to be rewritten (INCOMPAT\_CSUM\_SEED).
634*8a98ec7cSDarrick J. Wong   * - 0x4000
635*8a98ec7cSDarrick J. Wong     - Large directory >2GB or 3-level htree (INCOMPAT\_LARGEDIR). Prior to
636*8a98ec7cSDarrick J. Wong       this feature, directories could not be larger than 4GiB and could not
637*8a98ec7cSDarrick J. Wong       have an htree more than 2 levels deep. If this feature is enabled,
638*8a98ec7cSDarrick J. Wong       directories can be larger than 4GiB and have a maximum htree depth of 3.
639*8a98ec7cSDarrick J. Wong   * - 0x8000
640*8a98ec7cSDarrick J. Wong     - Data in inode (INCOMPAT\_INLINE\_DATA).
641*8a98ec7cSDarrick J. Wong   * - 0x10000
642*8a98ec7cSDarrick J. Wong     - Encrypted inodes are present on the filesystem. (INCOMPAT\_ENCRYPT).
643*8a98ec7cSDarrick J. Wong
644*8a98ec7cSDarrick J. Wong.. _super_rocompat:
645*8a98ec7cSDarrick J. Wong
646*8a98ec7cSDarrick J. WongThe superblock read-only compatible features field is a combination of any of
647*8a98ec7cSDarrick J. Wongthe following:
648*8a98ec7cSDarrick J. Wong
649*8a98ec7cSDarrick J. Wong.. list-table::
650*8a98ec7cSDarrick J. Wong   :widths: 16 64
651*8a98ec7cSDarrick J. Wong   :header-rows: 1
652*8a98ec7cSDarrick J. Wong
653*8a98ec7cSDarrick J. Wong   * - Value
654*8a98ec7cSDarrick J. Wong     - Description
655*8a98ec7cSDarrick J. Wong   * - 0x1
656*8a98ec7cSDarrick J. Wong     - Sparse superblocks. See the earlier discussion of this feature
657*8a98ec7cSDarrick J. Wong       (RO\_COMPAT\_SPARSE\_SUPER).
658*8a98ec7cSDarrick J. Wong   * - 0x2
659*8a98ec7cSDarrick J. Wong     - This filesystem has been used to store a file greater than 2GiB
660*8a98ec7cSDarrick J. Wong       (RO\_COMPAT\_LARGE\_FILE).
661*8a98ec7cSDarrick J. Wong   * - 0x4
662*8a98ec7cSDarrick J. Wong     - Not used in kernel or e2fsprogs (RO\_COMPAT\_BTREE\_DIR).
663*8a98ec7cSDarrick J. Wong   * - 0x8
664*8a98ec7cSDarrick J. Wong     - This filesystem has files whose sizes are represented in units of
665*8a98ec7cSDarrick J. Wong       logical blocks, not 512-byte sectors. This implies a very large file
666*8a98ec7cSDarrick J. Wong       indeed! (RO\_COMPAT\_HUGE\_FILE)
667*8a98ec7cSDarrick J. Wong   * - 0x10
668*8a98ec7cSDarrick J. Wong     - Group descriptors have checksums. In addition to detecting corruption,
669*8a98ec7cSDarrick J. Wong       this is useful for lazy formatting with uninitialized groups
670*8a98ec7cSDarrick J. Wong       (RO\_COMPAT\_GDT\_CSUM).
671*8a98ec7cSDarrick J. Wong   * - 0x20
672*8a98ec7cSDarrick J. Wong     - Indicates that the old ext3 32,000 subdirectory limit no longer applies
673*8a98ec7cSDarrick J. Wong       (RO\_COMPAT\_DIR\_NLINK). A directory's i\_links\_count will be set to 1
674*8a98ec7cSDarrick J. Wong       if it is incremented past 64,999.
675*8a98ec7cSDarrick J. Wong   * - 0x40
676*8a98ec7cSDarrick J. Wong     - Indicates that large inodes exist on this filesystem
677*8a98ec7cSDarrick J. Wong       (RO\_COMPAT\_EXTRA\_ISIZE).
678*8a98ec7cSDarrick J. Wong   * - 0x80
679*8a98ec7cSDarrick J. Wong     - This filesystem has a snapshot (RO\_COMPAT\_HAS\_SNAPSHOT).
680*8a98ec7cSDarrick J. Wong   * - 0x100
681*8a98ec7cSDarrick J. Wong     - `Quota <Quota>`__ (RO\_COMPAT\_QUOTA).
682*8a98ec7cSDarrick J. Wong   * - 0x200
683*8a98ec7cSDarrick J. Wong     - This filesystem supports “bigalloc”, which means that file extents are
684*8a98ec7cSDarrick J. Wong       tracked in units of clusters (of blocks) instead of blocks
685*8a98ec7cSDarrick J. Wong       (RO\_COMPAT\_BIGALLOC).
686*8a98ec7cSDarrick J. Wong   * - 0x400
687*8a98ec7cSDarrick J. Wong     - This filesystem supports metadata checksumming.
688*8a98ec7cSDarrick J. Wong       (RO\_COMPAT\_METADATA\_CSUM; implies RO\_COMPAT\_GDT\_CSUM, though
689*8a98ec7cSDarrick J. Wong       GDT\_CSUM must not be set)
690*8a98ec7cSDarrick J. Wong   * - 0x800
691*8a98ec7cSDarrick J. Wong     - Filesystem supports replicas. This feature is neither in the kernel nor
692*8a98ec7cSDarrick J. Wong       e2fsprogs. (RO\_COMPAT\_REPLICA)
693*8a98ec7cSDarrick J. Wong   * - 0x1000
694*8a98ec7cSDarrick J. Wong     - Read-only filesystem image; the kernel will not mount this image
695*8a98ec7cSDarrick J. Wong       read-write and most tools will refuse to write to the image.
696*8a98ec7cSDarrick J. Wong       (RO\_COMPAT\_READONLY)
697*8a98ec7cSDarrick J. Wong   * - 0x2000
698*8a98ec7cSDarrick J. Wong     - Filesystem tracks project quotas. (RO\_COMPAT\_PROJECT)
699*8a98ec7cSDarrick J. Wong
700*8a98ec7cSDarrick J. Wong.. _super_def_hash:
701*8a98ec7cSDarrick J. Wong
702*8a98ec7cSDarrick J. WongThe ``s_def_hash_version`` field is one of the following:
703*8a98ec7cSDarrick J. Wong
704*8a98ec7cSDarrick J. Wong.. list-table::
705*8a98ec7cSDarrick J. Wong   :widths: 8 72
706*8a98ec7cSDarrick J. Wong   :header-rows: 1
707*8a98ec7cSDarrick J. Wong
708*8a98ec7cSDarrick J. Wong   * - Value
709*8a98ec7cSDarrick J. Wong     - Description
710*8a98ec7cSDarrick J. Wong   * - 0x0
711*8a98ec7cSDarrick J. Wong     - Legacy.
712*8a98ec7cSDarrick J. Wong   * - 0x1
713*8a98ec7cSDarrick J. Wong     - Half MD4.
714*8a98ec7cSDarrick J. Wong   * - 0x2
715*8a98ec7cSDarrick J. Wong     - Tea.
716*8a98ec7cSDarrick J. Wong   * - 0x3
717*8a98ec7cSDarrick J. Wong     - Legacy, unsigned.
718*8a98ec7cSDarrick J. Wong   * - 0x4
719*8a98ec7cSDarrick J. Wong     - Half MD4, unsigned.
720*8a98ec7cSDarrick J. Wong   * - 0x5
721*8a98ec7cSDarrick J. Wong     - Tea, unsigned.
722*8a98ec7cSDarrick J. Wong
723*8a98ec7cSDarrick J. Wong.. _super_mountopts:
724*8a98ec7cSDarrick J. Wong
725*8a98ec7cSDarrick J. WongThe ``s_default_mount_opts`` field is any combination of the following:
726*8a98ec7cSDarrick J. Wong
727*8a98ec7cSDarrick J. Wong.. list-table::
728*8a98ec7cSDarrick J. Wong   :widths: 8 72
729*8a98ec7cSDarrick J. Wong   :header-rows: 1
730*8a98ec7cSDarrick J. Wong
731*8a98ec7cSDarrick J. Wong   * - Value
732*8a98ec7cSDarrick J. Wong     - Description
733*8a98ec7cSDarrick J. Wong   * - 0x0001
734*8a98ec7cSDarrick J. Wong     - Print debugging info upon (re)mount. (EXT4\_DEFM\_DEBUG)
735*8a98ec7cSDarrick J. Wong   * - 0x0002
736*8a98ec7cSDarrick J. Wong     - New files take the gid of the containing directory (instead of the fsgid
737*8a98ec7cSDarrick J. Wong       of the current process). (EXT4\_DEFM\_BSDGROUPS)
738*8a98ec7cSDarrick J. Wong   * - 0x0004
739*8a98ec7cSDarrick J. Wong     - Support userspace-provided extended attributes. (EXT4\_DEFM\_XATTR\_USER)
740*8a98ec7cSDarrick J. Wong   * - 0x0008
741*8a98ec7cSDarrick J. Wong     - Support POSIX access control lists (ACLs). (EXT4\_DEFM\_ACL)
742*8a98ec7cSDarrick J. Wong   * - 0x0010
743*8a98ec7cSDarrick J. Wong     - Do not support 32-bit UIDs. (EXT4\_DEFM\_UID16)
744*8a98ec7cSDarrick J. Wong   * - 0x0020
745*8a98ec7cSDarrick J. Wong     - All data and metadata are commited to the journal.
746*8a98ec7cSDarrick J. Wong       (EXT4\_DEFM\_JMODE\_DATA)
747*8a98ec7cSDarrick J. Wong   * - 0x0040
748*8a98ec7cSDarrick J. Wong     - All data are flushed to the disk before metadata are committed to the
749*8a98ec7cSDarrick J. Wong       journal. (EXT4\_DEFM\_JMODE\_ORDERED)
750*8a98ec7cSDarrick J. Wong   * - 0x0060
751*8a98ec7cSDarrick J. Wong     - Data ordering is not preserved; data may be written after the metadata
752*8a98ec7cSDarrick J. Wong       has been written. (EXT4\_DEFM\_JMODE\_WBACK)
753*8a98ec7cSDarrick J. Wong   * - 0x0100
754*8a98ec7cSDarrick J. Wong     - Disable write flushes. (EXT4\_DEFM\_NOBARRIER)
755*8a98ec7cSDarrick J. Wong   * - 0x0200
756*8a98ec7cSDarrick J. Wong     - Track which blocks in a filesystem are metadata and therefore should not
757*8a98ec7cSDarrick J. Wong       be used as data blocks. This option will be enabled by default on 3.18,
758*8a98ec7cSDarrick J. Wong       hopefully. (EXT4\_DEFM\_BLOCK\_VALIDITY)
759*8a98ec7cSDarrick J. Wong   * - 0x0400
760*8a98ec7cSDarrick J. Wong     - Enable DISCARD support, where the storage device is told about blocks
761*8a98ec7cSDarrick J. Wong       becoming unused. (EXT4\_DEFM\_DISCARD)
762*8a98ec7cSDarrick J. Wong   * - 0x0800
763*8a98ec7cSDarrick J. Wong     - Disable delayed allocation. (EXT4\_DEFM\_NODELALLOC)
764*8a98ec7cSDarrick J. Wong
765*8a98ec7cSDarrick J. Wong.. _super_flags:
766*8a98ec7cSDarrick J. Wong
767*8a98ec7cSDarrick J. WongThe ``s_flags`` field is any combination of the following:
768*8a98ec7cSDarrick J. Wong
769*8a98ec7cSDarrick J. Wong.. list-table::
770*8a98ec7cSDarrick J. Wong   :widths: 8 72
771*8a98ec7cSDarrick J. Wong   :header-rows: 1
772*8a98ec7cSDarrick J. Wong
773*8a98ec7cSDarrick J. Wong   * - Value
774*8a98ec7cSDarrick J. Wong     - Description
775*8a98ec7cSDarrick J. Wong   * - 0x0001
776*8a98ec7cSDarrick J. Wong     - Signed directory hash in use.
777*8a98ec7cSDarrick J. Wong   * - 0x0002
778*8a98ec7cSDarrick J. Wong     - Unsigned directory hash in use.
779*8a98ec7cSDarrick J. Wong   * - 0x0004
780*8a98ec7cSDarrick J. Wong     - To test development code.
781*8a98ec7cSDarrick J. Wong
782*8a98ec7cSDarrick J. Wong.. _super_encrypt:
783*8a98ec7cSDarrick J. Wong
784*8a98ec7cSDarrick J. WongThe ``s_encrypt_algos`` list can contain any of the following:
785*8a98ec7cSDarrick J. Wong
786*8a98ec7cSDarrick J. Wong.. list-table::
787*8a98ec7cSDarrick J. Wong   :widths: 8 72
788*8a98ec7cSDarrick J. Wong   :header-rows: 1
789*8a98ec7cSDarrick J. Wong
790*8a98ec7cSDarrick J. Wong   * - Value
791*8a98ec7cSDarrick J. Wong     - Description
792*8a98ec7cSDarrick J. Wong   * - 0
793*8a98ec7cSDarrick J. Wong     - Invalid algorithm (ENCRYPTION\_MODE\_INVALID).
794*8a98ec7cSDarrick J. Wong   * - 1
795*8a98ec7cSDarrick J. Wong     - 256-bit AES in XTS mode (ENCRYPTION\_MODE\_AES\_256\_XTS).
796*8a98ec7cSDarrick J. Wong   * - 2
797*8a98ec7cSDarrick J. Wong     - 256-bit AES in GCM mode (ENCRYPTION\_MODE\_AES\_256\_GCM).
798*8a98ec7cSDarrick J. Wong   * - 3
799*8a98ec7cSDarrick J. Wong     - 256-bit AES in CBC mode (ENCRYPTION\_MODE\_AES\_256\_CBC).
800*8a98ec7cSDarrick J. Wong
801*8a98ec7cSDarrick J. WongTotal size of the superblock is 1024 bytes.
802