xref: /openbmc/linux/Documentation/filesystems/ext4/super.rst (revision 3a6541e97c035dba90cdf37169d73b2d8057e55d)
18a98ec7cSDarrick J. Wong.. SPDX-License-Identifier: GPL-2.0
28a98ec7cSDarrick J. Wong
38a98ec7cSDarrick J. WongSuper Block
48a98ec7cSDarrick J. Wong-----------
58a98ec7cSDarrick J. Wong
68a98ec7cSDarrick J. WongThe superblock records various information about the enclosing
78a98ec7cSDarrick J. Wongfilesystem, such as block counts, inode counts, supported features,
88a98ec7cSDarrick J. Wongmaintenance information, and more.
98a98ec7cSDarrick J. Wong
108a98ec7cSDarrick J. WongIf the sparse\_super feature flag is set, redundant copies of the
118a98ec7cSDarrick J. Wongsuperblock and group descriptors are kept only in the groups whose group
128a98ec7cSDarrick J. Wongnumber is either 0 or a power of 3, 5, or 7. If the flag is not set,
138a98ec7cSDarrick J. Wongredundant copies are kept in all groups.
148a98ec7cSDarrick J. Wong
158a98ec7cSDarrick J. WongThe superblock checksum is calculated against the superblock structure,
168a98ec7cSDarrick J. Wongwhich includes the FS UUID.
178a98ec7cSDarrick J. Wong
188a98ec7cSDarrick J. WongThe ext4 superblock is laid out as follows in
198a98ec7cSDarrick J. Wong``struct ext4_super_block``:
208a98ec7cSDarrick J. Wong
218a98ec7cSDarrick J. Wong.. list-table::
228a98ec7cSDarrick J. Wong   :widths: 8 8 24 40
238a98ec7cSDarrick J. Wong   :header-rows: 1
248a98ec7cSDarrick J. Wong
258a98ec7cSDarrick J. Wong   * - Offset
268a98ec7cSDarrick J. Wong     - Size
278a98ec7cSDarrick J. Wong     - Name
288a98ec7cSDarrick J. Wong     - Description
298a98ec7cSDarrick J. Wong   * - 0x0
308a98ec7cSDarrick J. Wong     - \_\_le32
318a98ec7cSDarrick J. Wong     - s\_inodes\_count
328a98ec7cSDarrick J. Wong     - Total inode count.
338a98ec7cSDarrick J. Wong   * - 0x4
348a98ec7cSDarrick J. Wong     - \_\_le32
358a98ec7cSDarrick J. Wong     - s\_blocks\_count\_lo
368a98ec7cSDarrick J. Wong     - Total block count.
378a98ec7cSDarrick J. Wong   * - 0x8
388a98ec7cSDarrick J. Wong     - \_\_le32
398a98ec7cSDarrick J. Wong     - s\_r\_blocks\_count\_lo
408a98ec7cSDarrick J. Wong     - This number of blocks can only be allocated by the super-user.
418a98ec7cSDarrick J. Wong   * - 0xC
428a98ec7cSDarrick J. Wong     - \_\_le32
438a98ec7cSDarrick J. Wong     - s\_free\_blocks\_count\_lo
448a98ec7cSDarrick J. Wong     - Free block count.
458a98ec7cSDarrick J. Wong   * - 0x10
468a98ec7cSDarrick J. Wong     - \_\_le32
478a98ec7cSDarrick J. Wong     - s\_free\_inodes\_count
488a98ec7cSDarrick J. Wong     - Free inode count.
498a98ec7cSDarrick J. Wong   * - 0x14
508a98ec7cSDarrick J. Wong     - \_\_le32
518a98ec7cSDarrick J. Wong     - s\_first\_data\_block
528a98ec7cSDarrick J. Wong     - First data block. This must be at least 1 for 1k-block filesystems and
538a98ec7cSDarrick J. Wong       is typically 0 for all other block sizes.
548a98ec7cSDarrick J. Wong   * - 0x18
558a98ec7cSDarrick J. Wong     - \_\_le32
568a98ec7cSDarrick J. Wong     - s\_log\_block\_size
578a98ec7cSDarrick J. Wong     - Block size is 2 ^ (10 + s\_log\_block\_size).
588a98ec7cSDarrick J. Wong   * - 0x1C
598a98ec7cSDarrick J. Wong     - \_\_le32
608a98ec7cSDarrick J. Wong     - s\_log\_cluster\_size
61219db95bSAyush Ranjan     - Cluster size is 2 ^ (10 + s\_log\_cluster\_size) blocks if bigalloc is
628a98ec7cSDarrick J. Wong       enabled. Otherwise s\_log\_cluster\_size must equal s\_log\_block\_size.
638a98ec7cSDarrick J. Wong   * - 0x20
648a98ec7cSDarrick J. Wong     - \_\_le32
658a98ec7cSDarrick J. Wong     - s\_blocks\_per\_group
668a98ec7cSDarrick J. Wong     - Blocks per group.
678a98ec7cSDarrick J. Wong   * - 0x24
688a98ec7cSDarrick J. Wong     - \_\_le32
698a98ec7cSDarrick J. Wong     - s\_clusters\_per\_group
708a98ec7cSDarrick J. Wong     - Clusters per group, if bigalloc is enabled. Otherwise
718a98ec7cSDarrick J. Wong       s\_clusters\_per\_group must equal s\_blocks\_per\_group.
728a98ec7cSDarrick J. Wong   * - 0x28
738a98ec7cSDarrick J. Wong     - \_\_le32
748a98ec7cSDarrick J. Wong     - s\_inodes\_per\_group
758a98ec7cSDarrick J. Wong     - Inodes per group.
768a98ec7cSDarrick J. Wong   * - 0x2C
778a98ec7cSDarrick J. Wong     - \_\_le32
788a98ec7cSDarrick J. Wong     - s\_mtime
798a98ec7cSDarrick J. Wong     - Mount time, in seconds since the epoch.
808a98ec7cSDarrick J. Wong   * - 0x30
818a98ec7cSDarrick J. Wong     - \_\_le32
828a98ec7cSDarrick J. Wong     - s\_wtime
838a98ec7cSDarrick J. Wong     - Write time, in seconds since the epoch.
848a98ec7cSDarrick J. Wong   * - 0x34
858a98ec7cSDarrick J. Wong     - \_\_le16
868a98ec7cSDarrick J. Wong     - s\_mnt\_count
878a98ec7cSDarrick J. Wong     - Number of mounts since the last fsck.
888a98ec7cSDarrick J. Wong   * - 0x36
898a98ec7cSDarrick J. Wong     - \_\_le16
908a98ec7cSDarrick J. Wong     - s\_max\_mnt\_count
918a98ec7cSDarrick J. Wong     - Number of mounts beyond which a fsck is needed.
928a98ec7cSDarrick J. Wong   * - 0x38
938a98ec7cSDarrick J. Wong     - \_\_le16
948a98ec7cSDarrick J. Wong     - s\_magic
958a98ec7cSDarrick J. Wong     - Magic signature, 0xEF53
968a98ec7cSDarrick J. Wong   * - 0x3A
978a98ec7cSDarrick J. Wong     - \_\_le16
988a98ec7cSDarrick J. Wong     - s\_state
998a98ec7cSDarrick J. Wong     - File system state. See super_state_ for more info.
1008a98ec7cSDarrick J. Wong   * - 0x3C
1018a98ec7cSDarrick J. Wong     - \_\_le16
1028a98ec7cSDarrick J. Wong     - s\_errors
1038a98ec7cSDarrick J. Wong     - Behaviour when detecting errors. See super_errors_ for more info.
1048a98ec7cSDarrick J. Wong   * - 0x3E
1058a98ec7cSDarrick J. Wong     - \_\_le16
1068a98ec7cSDarrick J. Wong     - s\_minor\_rev\_level
1078a98ec7cSDarrick J. Wong     - Minor revision level.
1088a98ec7cSDarrick J. Wong   * - 0x40
1098a98ec7cSDarrick J. Wong     - \_\_le32
1108a98ec7cSDarrick J. Wong     - s\_lastcheck
1118a98ec7cSDarrick J. Wong     - Time of last check, in seconds since the epoch.
1128a98ec7cSDarrick J. Wong   * - 0x44
1138a98ec7cSDarrick J. Wong     - \_\_le32
1148a98ec7cSDarrick J. Wong     - s\_checkinterval
1158a98ec7cSDarrick J. Wong     - Maximum time between checks, in seconds.
1168a98ec7cSDarrick J. Wong   * - 0x48
1178a98ec7cSDarrick J. Wong     - \_\_le32
1188a98ec7cSDarrick J. Wong     - s\_creator\_os
1198a98ec7cSDarrick J. Wong     - Creator OS. See the table super_creator_ for more info.
1208a98ec7cSDarrick J. Wong   * - 0x4C
1218a98ec7cSDarrick J. Wong     - \_\_le32
1228a98ec7cSDarrick J. Wong     - s\_rev\_level
1238a98ec7cSDarrick J. Wong     - Revision level. See the table super_revision_ for more info.
1248a98ec7cSDarrick J. Wong   * - 0x50
1258a98ec7cSDarrick J. Wong     - \_\_le16
1268a98ec7cSDarrick J. Wong     - s\_def\_resuid
1278a98ec7cSDarrick J. Wong     - Default uid for reserved blocks.
1288a98ec7cSDarrick J. Wong   * - 0x52
1298a98ec7cSDarrick J. Wong     - \_\_le16
1308a98ec7cSDarrick J. Wong     - s\_def\_resgid
1318a98ec7cSDarrick J. Wong     - Default gid for reserved blocks.
1328a98ec7cSDarrick J. Wong   * -
1338a98ec7cSDarrick J. Wong     -
1348a98ec7cSDarrick J. Wong     -
1358a98ec7cSDarrick J. Wong     - These fields are for EXT4_DYNAMIC_REV superblocks only.
1368a98ec7cSDarrick J. Wong
1378a98ec7cSDarrick J. Wong       Note: the difference between the compatible feature set and the
1388a98ec7cSDarrick J. Wong       incompatible feature set is that if there is a bit set in the
1398a98ec7cSDarrick J. Wong       incompatible feature set that the kernel doesn't know about, it should
1408a98ec7cSDarrick J. Wong       refuse to mount the filesystem.
1418a98ec7cSDarrick J. Wong
1428a98ec7cSDarrick J. Wong       e2fsck's requirements are more strict; if it doesn't know
1438a98ec7cSDarrick J. Wong       about a feature in either the compatible or incompatible feature set, it
1448a98ec7cSDarrick J. Wong       must abort and not try to meddle with things it doesn't understand...
1458a98ec7cSDarrick J. Wong   * - 0x54
1468a98ec7cSDarrick J. Wong     - \_\_le32
1478a98ec7cSDarrick J. Wong     - s\_first\_ino
1488a98ec7cSDarrick J. Wong     - First non-reserved inode.
1498a98ec7cSDarrick J. Wong   * - 0x58
1508a98ec7cSDarrick J. Wong     - \_\_le16
1518a98ec7cSDarrick J. Wong     - s\_inode\_size
1528a98ec7cSDarrick J. Wong     - Size of inode structure, in bytes.
1538a98ec7cSDarrick J. Wong   * - 0x5A
1548a98ec7cSDarrick J. Wong     - \_\_le16
1558a98ec7cSDarrick J. Wong     - s\_block\_group\_nr
1568a98ec7cSDarrick J. Wong     - Block group # of this superblock.
1578a98ec7cSDarrick J. Wong   * - 0x5C
1588a98ec7cSDarrick J. Wong     - \_\_le32
1598a98ec7cSDarrick J. Wong     - s\_feature\_compat
1608a98ec7cSDarrick J. Wong     - Compatible feature set flags. Kernel can still read/write this fs even
1618a98ec7cSDarrick J. Wong       if it doesn't understand a flag; fsck should not do that. See the
1628a98ec7cSDarrick J. Wong       super_compat_ table for more info.
1638a98ec7cSDarrick J. Wong   * - 0x60
1648a98ec7cSDarrick J. Wong     - \_\_le32
1658a98ec7cSDarrick J. Wong     - s\_feature\_incompat
1668a98ec7cSDarrick J. Wong     - Incompatible feature set. If the kernel or fsck doesn't understand one
1678a98ec7cSDarrick J. Wong       of these bits, it should stop. See the super_incompat_ table for more
1688a98ec7cSDarrick J. Wong       info.
1698a98ec7cSDarrick J. Wong   * - 0x64
1708a98ec7cSDarrick J. Wong     - \_\_le32
1718a98ec7cSDarrick J. Wong     - s\_feature\_ro\_compat
1728a98ec7cSDarrick J. Wong     - Readonly-compatible feature set. If the kernel doesn't understand one of
1738a98ec7cSDarrick J. Wong       these bits, it can still mount read-only. See the super_rocompat_ table
1748a98ec7cSDarrick J. Wong       for more info.
1758a98ec7cSDarrick J. Wong   * - 0x68
1768a98ec7cSDarrick J. Wong     - \_\_u8
1778a98ec7cSDarrick J. Wong     - s\_uuid[16]
1788a98ec7cSDarrick J. Wong     - 128-bit UUID for volume.
1798a98ec7cSDarrick J. Wong   * - 0x78
1808a98ec7cSDarrick J. Wong     - char
1818a98ec7cSDarrick J. Wong     - s\_volume\_name[16]
1828a98ec7cSDarrick J. Wong     - Volume label.
1838a98ec7cSDarrick J. Wong   * - 0x88
1848a98ec7cSDarrick J. Wong     - char
1858a98ec7cSDarrick J. Wong     - s\_last\_mounted[64]
1868a98ec7cSDarrick J. Wong     - Directory where filesystem was last mounted.
1878a98ec7cSDarrick J. Wong   * - 0xC8
1888a98ec7cSDarrick J. Wong     - \_\_le32
1898a98ec7cSDarrick J. Wong     - s\_algorithm\_usage\_bitmap
1908a98ec7cSDarrick J. Wong     - For compression (Not used in e2fsprogs/Linux)
1918a98ec7cSDarrick J. Wong   * -
1928a98ec7cSDarrick J. Wong     -
1938a98ec7cSDarrick J. Wong     -
1948a98ec7cSDarrick J. Wong     - Performance hints.  Directory preallocation should only happen if the
1958a98ec7cSDarrick J. Wong       EXT4_FEATURE_COMPAT_DIR_PREALLOC flag is on.
1968a98ec7cSDarrick J. Wong   * - 0xCC
1978a98ec7cSDarrick J. Wong     - \_\_u8
1988a98ec7cSDarrick J. Wong     - s\_prealloc\_blocks
1998a98ec7cSDarrick J. Wong     - #. of blocks to try to preallocate for ... files? (Not used in
2008a98ec7cSDarrick J. Wong       e2fsprogs/Linux)
2018a98ec7cSDarrick J. Wong   * - 0xCD
2028a98ec7cSDarrick J. Wong     - \_\_u8
2038a98ec7cSDarrick J. Wong     - s\_prealloc\_dir\_blocks
2048a98ec7cSDarrick J. Wong     - #. of blocks to preallocate for directories. (Not used in
2058a98ec7cSDarrick J. Wong       e2fsprogs/Linux)
2068a98ec7cSDarrick J. Wong   * - 0xCE
2078a98ec7cSDarrick J. Wong     - \_\_le16
2088a98ec7cSDarrick J. Wong     - s\_reserved\_gdt\_blocks
2098a98ec7cSDarrick J. Wong     - Number of reserved GDT entries for future filesystem expansion.
2108a98ec7cSDarrick J. Wong   * -
2118a98ec7cSDarrick J. Wong     -
2128a98ec7cSDarrick J. Wong     -
2138a98ec7cSDarrick J. Wong     - Journalling support is valid only if EXT4_FEATURE_COMPAT_HAS_JOURNAL is
2148a98ec7cSDarrick J. Wong       set.
2158a98ec7cSDarrick J. Wong   * - 0xD0
2168a98ec7cSDarrick J. Wong     - \_\_u8
2178a98ec7cSDarrick J. Wong     - s\_journal\_uuid[16]
2188a98ec7cSDarrick J. Wong     - UUID of journal superblock
2198a98ec7cSDarrick J. Wong   * - 0xE0
2208a98ec7cSDarrick J. Wong     - \_\_le32
2218a98ec7cSDarrick J. Wong     - s\_journal\_inum
2228a98ec7cSDarrick J. Wong     - inode number of journal file.
2238a98ec7cSDarrick J. Wong   * - 0xE4
2248a98ec7cSDarrick J. Wong     - \_\_le32
2258a98ec7cSDarrick J. Wong     - s\_journal\_dev
2268a98ec7cSDarrick J. Wong     - Device number of journal file, if the external journal feature flag is
2278a98ec7cSDarrick J. Wong       set.
2288a98ec7cSDarrick J. Wong   * - 0xE8
2298a98ec7cSDarrick J. Wong     - \_\_le32
2308a98ec7cSDarrick J. Wong     - s\_last\_orphan
2318a98ec7cSDarrick J. Wong     - Start of list of orphaned inodes to delete.
2328a98ec7cSDarrick J. Wong   * - 0xEC
2338a98ec7cSDarrick J. Wong     - \_\_le32
2348a98ec7cSDarrick J. Wong     - s\_hash\_seed[4]
2358a98ec7cSDarrick J. Wong     - HTREE hash seed.
2368a98ec7cSDarrick J. Wong   * - 0xFC
2378a98ec7cSDarrick J. Wong     - \_\_u8
2388a98ec7cSDarrick J. Wong     - s\_def\_hash\_version
2398a98ec7cSDarrick J. Wong     - Default hash algorithm to use for directory hashes. See super_def_hash_
2408a98ec7cSDarrick J. Wong       for more info.
2418a98ec7cSDarrick J. Wong   * - 0xFD
2428a98ec7cSDarrick J. Wong     - \_\_u8
2438a98ec7cSDarrick J. Wong     - s\_jnl\_backup\_type
2448a98ec7cSDarrick J. Wong     - If this value is 0 or EXT3\_JNL\_BACKUP\_BLOCKS (1), then the
2458a98ec7cSDarrick J. Wong       ``s_jnl_blocks`` field contains a duplicate copy of the inode's
2468a98ec7cSDarrick J. Wong       ``i_block[]`` array and ``i_size``.
2478a98ec7cSDarrick J. Wong   * - 0xFE
2488a98ec7cSDarrick J. Wong     - \_\_le16
2498a98ec7cSDarrick J. Wong     - s\_desc\_size
2508a98ec7cSDarrick J. Wong     - Size of group descriptors, in bytes, if the 64bit incompat feature flag
2518a98ec7cSDarrick J. Wong       is set.
2528a98ec7cSDarrick J. Wong   * - 0x100
2538a98ec7cSDarrick J. Wong     - \_\_le32
2548a98ec7cSDarrick J. Wong     - s\_default\_mount\_opts
2558a98ec7cSDarrick J. Wong     - Default mount options. See the super_mountopts_ table for more info.
2568a98ec7cSDarrick J. Wong   * - 0x104
2578a98ec7cSDarrick J. Wong     - \_\_le32
2588a98ec7cSDarrick J. Wong     - s\_first\_meta\_bg
2598a98ec7cSDarrick J. Wong     - First metablock block group, if the meta\_bg feature is enabled.
2608a98ec7cSDarrick J. Wong   * - 0x108
2618a98ec7cSDarrick J. Wong     - \_\_le32
2628a98ec7cSDarrick J. Wong     - s\_mkfs\_time
2638a98ec7cSDarrick J. Wong     - When the filesystem was created, in seconds since the epoch.
2648a98ec7cSDarrick J. Wong   * - 0x10C
2658a98ec7cSDarrick J. Wong     - \_\_le32
2668a98ec7cSDarrick J. Wong     - s\_jnl\_blocks[17]
2678a98ec7cSDarrick J. Wong     - Backup copy of the journal inode's ``i_block[]`` array in the first 15
2688a98ec7cSDarrick J. Wong       elements and i\_size\_high and i\_size in the 16th and 17th elements,
2698a98ec7cSDarrick J. Wong       respectively.
2708a98ec7cSDarrick J. Wong   * -
2718a98ec7cSDarrick J. Wong     -
2728a98ec7cSDarrick J. Wong     -
2738a98ec7cSDarrick J. Wong     - 64bit support is valid only if EXT4_FEATURE_COMPAT_64BIT is set.
2748a98ec7cSDarrick J. Wong   * - 0x150
2758a98ec7cSDarrick J. Wong     - \_\_le32
2768a98ec7cSDarrick J. Wong     - s\_blocks\_count\_hi
2778a98ec7cSDarrick J. Wong     - High 32-bits of the block count.
2788a98ec7cSDarrick J. Wong   * - 0x154
2798a98ec7cSDarrick J. Wong     - \_\_le32
2808a98ec7cSDarrick J. Wong     - s\_r\_blocks\_count\_hi
2818a98ec7cSDarrick J. Wong     - High 32-bits of the reserved block count.
2828a98ec7cSDarrick J. Wong   * - 0x158
2838a98ec7cSDarrick J. Wong     - \_\_le32
2848a98ec7cSDarrick J. Wong     - s\_free\_blocks\_count\_hi
2858a98ec7cSDarrick J. Wong     - High 32-bits of the free block count.
2868a98ec7cSDarrick J. Wong   * - 0x15C
2878a98ec7cSDarrick J. Wong     - \_\_le16
2888a98ec7cSDarrick J. Wong     - s\_min\_extra\_isize
2898a98ec7cSDarrick J. Wong     - All inodes have at least # bytes.
2908a98ec7cSDarrick J. Wong   * - 0x15E
2918a98ec7cSDarrick J. Wong     - \_\_le16
2928a98ec7cSDarrick J. Wong     - s\_want\_extra\_isize
2938a98ec7cSDarrick J. Wong     - New inodes should reserve # bytes.
2948a98ec7cSDarrick J. Wong   * - 0x160
2958a98ec7cSDarrick J. Wong     - \_\_le32
2968a98ec7cSDarrick J. Wong     - s\_flags
2978a98ec7cSDarrick J. Wong     - Miscellaneous flags. See the super_flags_ table for more info.
2988a98ec7cSDarrick J. Wong   * - 0x164
2998a98ec7cSDarrick J. Wong     - \_\_le16
3008a98ec7cSDarrick J. Wong     - s\_raid\_stride
3018a98ec7cSDarrick J. Wong     - RAID stride. This is the number of logical blocks read from or written
3028a98ec7cSDarrick J. Wong       to the disk before moving to the next disk. This affects the placement
3038a98ec7cSDarrick J. Wong       of filesystem metadata, which will hopefully make RAID storage faster.
3048a98ec7cSDarrick J. Wong   * - 0x166
3058a98ec7cSDarrick J. Wong     - \_\_le16
3068a98ec7cSDarrick J. Wong     - s\_mmp\_interval
3078a98ec7cSDarrick J. Wong     - #. seconds to wait in multi-mount prevention (MMP) checking. In theory,
3088a98ec7cSDarrick J. Wong       MMP is a mechanism to record in the superblock which host and device
3098a98ec7cSDarrick J. Wong       have mounted the filesystem, in order to prevent multiple mounts. This
3108a98ec7cSDarrick J. Wong       feature does not seem to be implemented...
3118a98ec7cSDarrick J. Wong   * - 0x168
3128a98ec7cSDarrick J. Wong     - \_\_le64
3138a98ec7cSDarrick J. Wong     - s\_mmp\_block
3148a98ec7cSDarrick J. Wong     - Block # for multi-mount protection data.
3158a98ec7cSDarrick J. Wong   * - 0x170
3168a98ec7cSDarrick J. Wong     - \_\_le32
3178a98ec7cSDarrick J. Wong     - s\_raid\_stripe\_width
3188a98ec7cSDarrick J. Wong     - RAID stripe width. This is the number of logical blocks read from or
3198a98ec7cSDarrick J. Wong       written to the disk before coming back to the current disk. This is used
3208a98ec7cSDarrick J. Wong       by the block allocator to try to reduce the number of read-modify-write
3218a98ec7cSDarrick J. Wong       operations in a RAID5/6.
3228a98ec7cSDarrick J. Wong   * - 0x174
3238a98ec7cSDarrick J. Wong     - \_\_u8
3248a98ec7cSDarrick J. Wong     - s\_log\_groups\_per\_flex
3258a98ec7cSDarrick J. Wong     - Size of a flexible block group is 2 ^ ``s_log_groups_per_flex``.
3268a98ec7cSDarrick J. Wong   * - 0x175
3278a98ec7cSDarrick J. Wong     - \_\_u8
3288a98ec7cSDarrick J. Wong     - s\_checksum\_type
3298a98ec7cSDarrick J. Wong     - Metadata checksum algorithm type. The only valid value is 1 (crc32c).
3308a98ec7cSDarrick J. Wong   * - 0x176
3318a98ec7cSDarrick J. Wong     - \_\_le16
3328a98ec7cSDarrick J. Wong     - s\_reserved\_pad
3338a98ec7cSDarrick J. Wong     -
3348a98ec7cSDarrick J. Wong   * - 0x178
3358a98ec7cSDarrick J. Wong     - \_\_le64
3368a98ec7cSDarrick J. Wong     - s\_kbytes\_written
3378a98ec7cSDarrick J. Wong     - Number of KiB written to this filesystem over its lifetime.
3388a98ec7cSDarrick J. Wong   * - 0x180
3398a98ec7cSDarrick J. Wong     - \_\_le32
3408a98ec7cSDarrick J. Wong     - s\_snapshot\_inum
3418a98ec7cSDarrick J. Wong     - inode number of active snapshot. (Not used in e2fsprogs/Linux.)
3428a98ec7cSDarrick J. Wong   * - 0x184
3438a98ec7cSDarrick J. Wong     - \_\_le32
3448a98ec7cSDarrick J. Wong     - s\_snapshot\_id
3458a98ec7cSDarrick J. Wong     - Sequential ID of active snapshot. (Not used in e2fsprogs/Linux.)
3468a98ec7cSDarrick J. Wong   * - 0x188
3478a98ec7cSDarrick J. Wong     - \_\_le64
3488a98ec7cSDarrick J. Wong     - s\_snapshot\_r\_blocks\_count
3498a98ec7cSDarrick J. Wong     - Number of blocks reserved for active snapshot's future use. (Not used in
3508a98ec7cSDarrick J. Wong       e2fsprogs/Linux.)
3518a98ec7cSDarrick J. Wong   * - 0x190
3528a98ec7cSDarrick J. Wong     - \_\_le32
3538a98ec7cSDarrick J. Wong     - s\_snapshot\_list
3548a98ec7cSDarrick J. Wong     - inode number of the head of the on-disk snapshot list. (Not used in
3558a98ec7cSDarrick J. Wong       e2fsprogs/Linux.)
3568a98ec7cSDarrick J. Wong   * - 0x194
3578a98ec7cSDarrick J. Wong     - \_\_le32
3588a98ec7cSDarrick J. Wong     - s\_error\_count
3598a98ec7cSDarrick J. Wong     - Number of errors seen.
3608a98ec7cSDarrick J. Wong   * - 0x198
3618a98ec7cSDarrick J. Wong     - \_\_le32
3628a98ec7cSDarrick J. Wong     - s\_first\_error\_time
3638a98ec7cSDarrick J. Wong     - First time an error happened, in seconds since the epoch.
3648a98ec7cSDarrick J. Wong   * - 0x19C
3658a98ec7cSDarrick J. Wong     - \_\_le32
3668a98ec7cSDarrick J. Wong     - s\_first\_error\_ino
3678a98ec7cSDarrick J. Wong     - inode involved in first error.
3688a98ec7cSDarrick J. Wong   * - 0x1A0
3698a98ec7cSDarrick J. Wong     - \_\_le64
3708a98ec7cSDarrick J. Wong     - s\_first\_error\_block
3718a98ec7cSDarrick J. Wong     - Number of block involved of first error.
3728a98ec7cSDarrick J. Wong   * - 0x1A8
3738a98ec7cSDarrick J. Wong     - \_\_u8
3748a98ec7cSDarrick J. Wong     - s\_first\_error\_func[32]
3758a98ec7cSDarrick J. Wong     - Name of function where the error happened.
3768a98ec7cSDarrick J. Wong   * - 0x1C8
3778a98ec7cSDarrick J. Wong     - \_\_le32
3788a98ec7cSDarrick J. Wong     - s\_first\_error\_line
3798a98ec7cSDarrick J. Wong     - Line number where error happened.
3808a98ec7cSDarrick J. Wong   * - 0x1CC
3818a98ec7cSDarrick J. Wong     - \_\_le32
3828a98ec7cSDarrick J. Wong     - s\_last\_error\_time
3838a98ec7cSDarrick J. Wong     - Time of most recent error, in seconds since the epoch.
3848a98ec7cSDarrick J. Wong   * - 0x1D0
3858a98ec7cSDarrick J. Wong     - \_\_le32
3868a98ec7cSDarrick J. Wong     - s\_last\_error\_ino
3878a98ec7cSDarrick J. Wong     - inode involved in most recent error.
3888a98ec7cSDarrick J. Wong   * - 0x1D4
3898a98ec7cSDarrick J. Wong     - \_\_le32
3908a98ec7cSDarrick J. Wong     - s\_last\_error\_line
3918a98ec7cSDarrick J. Wong     - Line number where most recent error happened.
3928a98ec7cSDarrick J. Wong   * - 0x1D8
3938a98ec7cSDarrick J. Wong     - \_\_le64
3948a98ec7cSDarrick J. Wong     - s\_last\_error\_block
3958a98ec7cSDarrick J. Wong     - Number of block involved in most recent error.
3968a98ec7cSDarrick J. Wong   * - 0x1E0
3978a98ec7cSDarrick J. Wong     - \_\_u8
3988a98ec7cSDarrick J. Wong     - s\_last\_error\_func[32]
3998a98ec7cSDarrick J. Wong     - Name of function where the most recent error happened.
4008a98ec7cSDarrick J. Wong   * - 0x200
4018a98ec7cSDarrick J. Wong     - \_\_u8
4028a98ec7cSDarrick J. Wong     - s\_mount\_opts[64]
4038a98ec7cSDarrick J. Wong     - ASCIIZ string of mount options.
4048a98ec7cSDarrick J. Wong   * - 0x240
4058a98ec7cSDarrick J. Wong     - \_\_le32
4068a98ec7cSDarrick J. Wong     - s\_usr\_quota\_inum
4078a98ec7cSDarrick J. Wong     - Inode number of user `quota <quota>`__ file.
4088a98ec7cSDarrick J. Wong   * - 0x244
4098a98ec7cSDarrick J. Wong     - \_\_le32
4108a98ec7cSDarrick J. Wong     - s\_grp\_quota\_inum
4118a98ec7cSDarrick J. Wong     - Inode number of group `quota <quota>`__ file.
4128a98ec7cSDarrick J. Wong   * - 0x248
4138a98ec7cSDarrick J. Wong     - \_\_le32
4148a98ec7cSDarrick J. Wong     - s\_overhead\_blocks
4158a98ec7cSDarrick J. Wong     - Overhead blocks/clusters in fs. (Huh? This field is always zero, which
4168a98ec7cSDarrick J. Wong       means that the kernel calculates it dynamically.)
4178a98ec7cSDarrick J. Wong   * - 0x24C
4188a98ec7cSDarrick J. Wong     - \_\_le32
4198a98ec7cSDarrick J. Wong     - s\_backup\_bgs[2]
4208a98ec7cSDarrick J. Wong     - Block groups containing superblock backups (if sparse\_super2)
4218a98ec7cSDarrick J. Wong   * - 0x254
4228a98ec7cSDarrick J. Wong     - \_\_u8
4238a98ec7cSDarrick J. Wong     - s\_encrypt\_algos[4]
4248a98ec7cSDarrick J. Wong     - Encryption algorithms in use. There can be up to four algorithms in use
4258a98ec7cSDarrick J. Wong       at any time; valid algorithm codes are given in the super_encrypt_ table
4268a98ec7cSDarrick J. Wong       below.
4278a98ec7cSDarrick J. Wong   * - 0x258
4288a98ec7cSDarrick J. Wong     - \_\_u8
4298a98ec7cSDarrick J. Wong     - s\_encrypt\_pw\_salt[16]
4308a98ec7cSDarrick J. Wong     - Salt for the string2key algorithm for encryption.
4318a98ec7cSDarrick J. Wong   * - 0x268
4328a98ec7cSDarrick J. Wong     - \_\_le32
4338a98ec7cSDarrick J. Wong     - s\_lpf\_ino
4348a98ec7cSDarrick J. Wong     - Inode number of lost+found
4358a98ec7cSDarrick J. Wong   * - 0x26C
4368a98ec7cSDarrick J. Wong     - \_\_le32
4378a98ec7cSDarrick J. Wong     - s\_prj\_quota\_inum
4388a98ec7cSDarrick J. Wong     - Inode that tracks project quotas.
4398a98ec7cSDarrick J. Wong   * - 0x270
4408a98ec7cSDarrick J. Wong     - \_\_le32
4418a98ec7cSDarrick J. Wong     - s\_checksum\_seed
4428a98ec7cSDarrick J. Wong     - Checksum seed used for metadata\_csum calculations. This value is
4438a98ec7cSDarrick J. Wong       crc32c(~0, $orig\_fs\_uuid).
4448a98ec7cSDarrick J. Wong   * - 0x274
4458a98ec7cSDarrick J. Wong     - \_\_u8
4468a98ec7cSDarrick J. Wong     - s\_wtime_hi
4478a98ec7cSDarrick J. Wong     - Upper 8 bits of the s_wtime field.
4488a98ec7cSDarrick J. Wong   * - 0x275
4498a98ec7cSDarrick J. Wong     - \_\_u8
450219db95bSAyush Ranjan     - s\_mtime_hi
4518a98ec7cSDarrick J. Wong     - Upper 8 bits of the s_mtime field.
4528a98ec7cSDarrick J. Wong   * - 0x276
4538a98ec7cSDarrick J. Wong     - \_\_u8
4548a98ec7cSDarrick J. Wong     - s\_mkfs_time_hi
4558a98ec7cSDarrick J. Wong     - Upper 8 bits of the s_mkfs_time field.
4568a98ec7cSDarrick J. Wong   * - 0x277
4578a98ec7cSDarrick J. Wong     - \_\_u8
4588a98ec7cSDarrick J. Wong     - s\_lastcheck_hi
4598a98ec7cSDarrick J. Wong     - Upper 8 bits of the s_lastcheck_hi field.
4608a98ec7cSDarrick J. Wong   * - 0x278
4618a98ec7cSDarrick J. Wong     - \_\_u8
4628a98ec7cSDarrick J. Wong     - s\_first_error_time_hi
4638a98ec7cSDarrick J. Wong     - Upper 8 bits of the s_first_error_time_hi field.
4648a98ec7cSDarrick J. Wong   * - 0x279
4658a98ec7cSDarrick J. Wong     - \_\_u8
4668a98ec7cSDarrick J. Wong     - s\_last_error_time_hi
4678a98ec7cSDarrick J. Wong     - Upper 8 bits of the s_last_error_time_hi field.
4688a98ec7cSDarrick J. Wong   * - 0x27A
469219db95bSAyush Ranjan     - \_\_u8
470219db95bSAyush Ranjan     - s\_pad[2]
4718a98ec7cSDarrick J. Wong     - Zero padding.
4728a98ec7cSDarrick J. Wong   * - 0x27C
473219db95bSAyush Ranjan     - \_\_le16
474219db95bSAyush Ranjan     - s\_encoding
475219db95bSAyush Ranjan     - Filename charset encoding.
476219db95bSAyush Ranjan   * - 0x27E
477219db95bSAyush Ranjan     - \_\_le16
478219db95bSAyush Ranjan     - s\_encoding_flags
479219db95bSAyush Ranjan     - Filename charset encoding flags.
480219db95bSAyush Ranjan   * - 0x280
4818a98ec7cSDarrick J. Wong     - \_\_le32
482*3a6541e9SJan Kara     - s\_orphan\_file\_inum
483*3a6541e9SJan Kara     - Orphan file inode number.
484*3a6541e9SJan Kara   * - 0x284
485*3a6541e9SJan Kara     - \_\_le32
486*3a6541e9SJan Kara     - s\_reserved[94]
4878a98ec7cSDarrick J. Wong     - Padding to the end of the block.
4888a98ec7cSDarrick J. Wong   * - 0x3FC
4898a98ec7cSDarrick J. Wong     - \_\_le32
4908a98ec7cSDarrick J. Wong     - s\_checksum
4918a98ec7cSDarrick J. Wong     - Superblock checksum.
4928a98ec7cSDarrick J. Wong
4938a98ec7cSDarrick J. Wong.. _super_state:
4948a98ec7cSDarrick J. Wong
4958a98ec7cSDarrick J. WongThe superblock state is some combination of the following:
4968a98ec7cSDarrick J. Wong
4978a98ec7cSDarrick J. Wong.. list-table::
4988a98ec7cSDarrick J. Wong   :widths: 8 72
4998a98ec7cSDarrick J. Wong   :header-rows: 1
5008a98ec7cSDarrick J. Wong
5018a98ec7cSDarrick J. Wong   * - Value
5028a98ec7cSDarrick J. Wong     - Description
5038a98ec7cSDarrick J. Wong   * - 0x0001
5048a98ec7cSDarrick J. Wong     - Cleanly umounted
5058a98ec7cSDarrick J. Wong   * - 0x0002
5068a98ec7cSDarrick J. Wong     - Errors detected
5078a98ec7cSDarrick J. Wong   * - 0x0004
5088a98ec7cSDarrick J. Wong     - Orphans being recovered
5098a98ec7cSDarrick J. Wong
5108a98ec7cSDarrick J. Wong.. _super_errors:
5118a98ec7cSDarrick J. Wong
5128a98ec7cSDarrick J. WongThe superblock error policy is one of the following:
5138a98ec7cSDarrick J. Wong
5148a98ec7cSDarrick J. Wong.. list-table::
5158a98ec7cSDarrick J. Wong   :widths: 8 72
5168a98ec7cSDarrick J. Wong   :header-rows: 1
5178a98ec7cSDarrick J. Wong
5188a98ec7cSDarrick J. Wong   * - Value
5198a98ec7cSDarrick J. Wong     - Description
5208a98ec7cSDarrick J. Wong   * - 1
5218a98ec7cSDarrick J. Wong     - Continue
5228a98ec7cSDarrick J. Wong   * - 2
5238a98ec7cSDarrick J. Wong     - Remount read-only
5248a98ec7cSDarrick J. Wong   * - 3
5258a98ec7cSDarrick J. Wong     - Panic
5268a98ec7cSDarrick J. Wong
5278a98ec7cSDarrick J. Wong.. _super_creator:
5288a98ec7cSDarrick J. Wong
5298a98ec7cSDarrick J. WongThe filesystem creator is one of the following:
5308a98ec7cSDarrick J. Wong
5318a98ec7cSDarrick J. Wong.. list-table::
5328a98ec7cSDarrick J. Wong   :widths: 8 72
5338a98ec7cSDarrick J. Wong   :header-rows: 1
5348a98ec7cSDarrick J. Wong
5358a98ec7cSDarrick J. Wong   * - Value
5368a98ec7cSDarrick J. Wong     - Description
5378a98ec7cSDarrick J. Wong   * - 0
5388a98ec7cSDarrick J. Wong     - Linux
5398a98ec7cSDarrick J. Wong   * - 1
5408a98ec7cSDarrick J. Wong     - Hurd
5418a98ec7cSDarrick J. Wong   * - 2
5428a98ec7cSDarrick J. Wong     - Masix
5438a98ec7cSDarrick J. Wong   * - 3
5448a98ec7cSDarrick J. Wong     - FreeBSD
5458a98ec7cSDarrick J. Wong   * - 4
5468a98ec7cSDarrick J. Wong     - Lites
5478a98ec7cSDarrick J. Wong
5488a98ec7cSDarrick J. Wong.. _super_revision:
5498a98ec7cSDarrick J. Wong
5508a98ec7cSDarrick J. WongThe superblock revision is one of the following:
5518a98ec7cSDarrick J. Wong
5528a98ec7cSDarrick J. Wong.. list-table::
5538a98ec7cSDarrick J. Wong   :widths: 8 72
5548a98ec7cSDarrick J. Wong   :header-rows: 1
5558a98ec7cSDarrick J. Wong
5568a98ec7cSDarrick J. Wong   * - Value
5578a98ec7cSDarrick J. Wong     - Description
5588a98ec7cSDarrick J. Wong   * - 0
5598a98ec7cSDarrick J. Wong     - Original format
5608a98ec7cSDarrick J. Wong   * - 1
5618a98ec7cSDarrick J. Wong     - v2 format w/ dynamic inode sizes
5628a98ec7cSDarrick J. Wong
5638a98ec7cSDarrick J. WongNote that ``EXT4_DYNAMIC_REV`` refers to a revision 1 or newer filesystem.
5648a98ec7cSDarrick J. Wong
5658a98ec7cSDarrick J. Wong.. _super_compat:
5668a98ec7cSDarrick J. Wong
5678a98ec7cSDarrick J. WongThe superblock compatible features field is a combination of any of the
5688a98ec7cSDarrick J. Wongfollowing:
5698a98ec7cSDarrick J. Wong
5708a98ec7cSDarrick J. Wong.. list-table::
5718a98ec7cSDarrick J. Wong   :widths: 16 64
5728a98ec7cSDarrick J. Wong   :header-rows: 1
5738a98ec7cSDarrick J. Wong
5748a98ec7cSDarrick J. Wong   * - Value
5758a98ec7cSDarrick J. Wong     - Description
5768a98ec7cSDarrick J. Wong   * - 0x1
5778a98ec7cSDarrick J. Wong     - Directory preallocation (COMPAT\_DIR\_PREALLOC).
5788a98ec7cSDarrick J. Wong   * - 0x2
5798a98ec7cSDarrick J. Wong     - “imagic inodes”. Not clear from the code what this does
5808a98ec7cSDarrick J. Wong       (COMPAT\_IMAGIC\_INODES).
5818a98ec7cSDarrick J. Wong   * - 0x4
5828a98ec7cSDarrick J. Wong     - Has a journal (COMPAT\_HAS\_JOURNAL).
5838a98ec7cSDarrick J. Wong   * - 0x8
5848a98ec7cSDarrick J. Wong     - Supports extended attributes (COMPAT\_EXT\_ATTR).
5858a98ec7cSDarrick J. Wong   * - 0x10
5868a98ec7cSDarrick J. Wong     - Has reserved GDT blocks for filesystem expansion
5878a98ec7cSDarrick J. Wong       (COMPAT\_RESIZE\_INODE). Requires RO\_COMPAT\_SPARSE\_SUPER.
5888a98ec7cSDarrick J. Wong   * - 0x20
5898a98ec7cSDarrick J. Wong     - Has directory indices (COMPAT\_DIR\_INDEX).
5908a98ec7cSDarrick J. Wong   * - 0x40
5918a98ec7cSDarrick J. Wong     - “Lazy BG”. Not in Linux kernel, seems to have been for uninitialized
5928a98ec7cSDarrick J. Wong       block groups? (COMPAT\_LAZY\_BG)
5938a98ec7cSDarrick J. Wong   * - 0x80
5948a98ec7cSDarrick J. Wong     - “Exclude inode”. Not used. (COMPAT\_EXCLUDE\_INODE).
5958a98ec7cSDarrick J. Wong   * - 0x100
5968a98ec7cSDarrick J. Wong     - “Exclude bitmap”. Seems to be used to indicate the presence of
5978a98ec7cSDarrick J. Wong       snapshot-related exclude bitmaps? Not defined in kernel or used in
5988a98ec7cSDarrick J. Wong       e2fsprogs (COMPAT\_EXCLUDE\_BITMAP).
5998a98ec7cSDarrick J. Wong   * - 0x200
6008a98ec7cSDarrick J. Wong     - Sparse Super Block, v2. If this flag is set, the SB field s\_backup\_bgs
6018a98ec7cSDarrick J. Wong       points to the two block groups that contain backup superblocks
6028a98ec7cSDarrick J. Wong       (COMPAT\_SPARSE\_SUPER2).
603a44ad683SHarshad Shirwadkar   * - 0x400
604a44ad683SHarshad Shirwadkar     - Fast commits supported. Although fast commits blocks are
605a44ad683SHarshad Shirwadkar       backward incompatible, fast commit blocks are not always
606a44ad683SHarshad Shirwadkar       present in the journal. If fast commit blocks are present in
607a44ad683SHarshad Shirwadkar       the journal, JBD2 incompat feature
608a44ad683SHarshad Shirwadkar       (JBD2\_FEATURE\_INCOMPAT\_FAST\_COMMIT) gets
609a44ad683SHarshad Shirwadkar       set (COMPAT\_FAST\_COMMIT).
610*3a6541e9SJan Kara   * - 0x1000
611*3a6541e9SJan Kara     - Orphan file allocated. This is the special file for more efficient
612*3a6541e9SJan Kara       tracking of unlinked but still open inodes. When there may be any
613*3a6541e9SJan Kara       entries in the file, we additionally set proper rocompat feature
614*3a6541e9SJan Kara       (RO\_COMPAT\_ORPHAN\_PRESENT).
6158a98ec7cSDarrick J. Wong
6168a98ec7cSDarrick J. Wong.. _super_incompat:
6178a98ec7cSDarrick J. Wong
6188a98ec7cSDarrick J. WongThe superblock incompatible features field is a combination of any of the
6198a98ec7cSDarrick J. Wongfollowing:
6208a98ec7cSDarrick J. Wong
6218a98ec7cSDarrick J. Wong.. list-table::
6228a98ec7cSDarrick J. Wong   :widths: 16 64
6238a98ec7cSDarrick J. Wong   :header-rows: 1
6248a98ec7cSDarrick J. Wong
6258a98ec7cSDarrick J. Wong   * - Value
6268a98ec7cSDarrick J. Wong     - Description
6278a98ec7cSDarrick J. Wong   * - 0x1
6288a98ec7cSDarrick J. Wong     - Compression (INCOMPAT\_COMPRESSION).
6298a98ec7cSDarrick J. Wong   * - 0x2
6308a98ec7cSDarrick J. Wong     - Directory entries record the file type. See ext4\_dir\_entry\_2 below
6318a98ec7cSDarrick J. Wong       (INCOMPAT\_FILETYPE).
6328a98ec7cSDarrick J. Wong   * - 0x4
6338a98ec7cSDarrick J. Wong     - Filesystem needs recovery (INCOMPAT\_RECOVER).
6348a98ec7cSDarrick J. Wong   * - 0x8
6358a98ec7cSDarrick J. Wong     - Filesystem has a separate journal device (INCOMPAT\_JOURNAL\_DEV).
6368a98ec7cSDarrick J. Wong   * - 0x10
6378a98ec7cSDarrick J. Wong     - Meta block groups. See the earlier discussion of this feature
6388a98ec7cSDarrick J. Wong       (INCOMPAT\_META\_BG).
6398a98ec7cSDarrick J. Wong   * - 0x40
6408a98ec7cSDarrick J. Wong     - Files in this filesystem use extents (INCOMPAT\_EXTENTS).
6418a98ec7cSDarrick J. Wong   * - 0x80
6428a98ec7cSDarrick J. Wong     - Enable a filesystem size of 2^64 blocks (INCOMPAT\_64BIT).
6438a98ec7cSDarrick J. Wong   * - 0x100
644219db95bSAyush Ranjan     - Multiple mount protection (INCOMPAT\_MMP).
6458a98ec7cSDarrick J. Wong   * - 0x200
6468a98ec7cSDarrick J. Wong     - Flexible block groups. See the earlier discussion of this feature
6478a98ec7cSDarrick J. Wong       (INCOMPAT\_FLEX\_BG).
6488a98ec7cSDarrick J. Wong   * - 0x400
6498a98ec7cSDarrick J. Wong     - Inodes can be used to store large extended attribute values
6508a98ec7cSDarrick J. Wong       (INCOMPAT\_EA\_INODE).
6518a98ec7cSDarrick J. Wong   * - 0x1000
6528a98ec7cSDarrick J. Wong     - Data in directory entry (INCOMPAT\_DIRDATA). (Not implemented?)
6538a98ec7cSDarrick J. Wong   * - 0x2000
6548a98ec7cSDarrick J. Wong     - Metadata checksum seed is stored in the superblock. This feature enables
6558a98ec7cSDarrick J. Wong       the administrator to change the UUID of a metadata\_csum filesystem
6568a98ec7cSDarrick J. Wong       while the filesystem is mounted; without it, the checksum definition
6578a98ec7cSDarrick J. Wong       requires all metadata blocks to be rewritten (INCOMPAT\_CSUM\_SEED).
6588a98ec7cSDarrick J. Wong   * - 0x4000
6598a98ec7cSDarrick J. Wong     - Large directory >2GB or 3-level htree (INCOMPAT\_LARGEDIR). Prior to
6608a98ec7cSDarrick J. Wong       this feature, directories could not be larger than 4GiB and could not
6618a98ec7cSDarrick J. Wong       have an htree more than 2 levels deep. If this feature is enabled,
6628a98ec7cSDarrick J. Wong       directories can be larger than 4GiB and have a maximum htree depth of 3.
6638a98ec7cSDarrick J. Wong   * - 0x8000
6648a98ec7cSDarrick J. Wong     - Data in inode (INCOMPAT\_INLINE\_DATA).
6658a98ec7cSDarrick J. Wong   * - 0x10000
6668a98ec7cSDarrick J. Wong     - Encrypted inodes are present on the filesystem. (INCOMPAT\_ENCRYPT).
6678a98ec7cSDarrick J. Wong
6688a98ec7cSDarrick J. Wong.. _super_rocompat:
6698a98ec7cSDarrick J. Wong
6708a98ec7cSDarrick J. WongThe superblock read-only compatible features field is a combination of any of
6718a98ec7cSDarrick J. Wongthe following:
6728a98ec7cSDarrick J. Wong
6738a98ec7cSDarrick J. Wong.. list-table::
6748a98ec7cSDarrick J. Wong   :widths: 16 64
6758a98ec7cSDarrick J. Wong   :header-rows: 1
6768a98ec7cSDarrick J. Wong
6778a98ec7cSDarrick J. Wong   * - Value
6788a98ec7cSDarrick J. Wong     - Description
6798a98ec7cSDarrick J. Wong   * - 0x1
6808a98ec7cSDarrick J. Wong     - Sparse superblocks. See the earlier discussion of this feature
6818a98ec7cSDarrick J. Wong       (RO\_COMPAT\_SPARSE\_SUPER).
6828a98ec7cSDarrick J. Wong   * - 0x2
6838a98ec7cSDarrick J. Wong     - This filesystem has been used to store a file greater than 2GiB
6848a98ec7cSDarrick J. Wong       (RO\_COMPAT\_LARGE\_FILE).
6858a98ec7cSDarrick J. Wong   * - 0x4
6868a98ec7cSDarrick J. Wong     - Not used in kernel or e2fsprogs (RO\_COMPAT\_BTREE\_DIR).
6878a98ec7cSDarrick J. Wong   * - 0x8
6888a98ec7cSDarrick J. Wong     - This filesystem has files whose sizes are represented in units of
6898a98ec7cSDarrick J. Wong       logical blocks, not 512-byte sectors. This implies a very large file
6908a98ec7cSDarrick J. Wong       indeed! (RO\_COMPAT\_HUGE\_FILE)
6918a98ec7cSDarrick J. Wong   * - 0x10
6928a98ec7cSDarrick J. Wong     - Group descriptors have checksums. In addition to detecting corruption,
6938a98ec7cSDarrick J. Wong       this is useful for lazy formatting with uninitialized groups
6948a98ec7cSDarrick J. Wong       (RO\_COMPAT\_GDT\_CSUM).
6958a98ec7cSDarrick J. Wong   * - 0x20
6968a98ec7cSDarrick J. Wong     - Indicates that the old ext3 32,000 subdirectory limit no longer applies
6978a98ec7cSDarrick J. Wong       (RO\_COMPAT\_DIR\_NLINK). A directory's i\_links\_count will be set to 1
6988a98ec7cSDarrick J. Wong       if it is incremented past 64,999.
6998a98ec7cSDarrick J. Wong   * - 0x40
7008a98ec7cSDarrick J. Wong     - Indicates that large inodes exist on this filesystem
7018a98ec7cSDarrick J. Wong       (RO\_COMPAT\_EXTRA\_ISIZE).
7028a98ec7cSDarrick J. Wong   * - 0x80
7038a98ec7cSDarrick J. Wong     - This filesystem has a snapshot (RO\_COMPAT\_HAS\_SNAPSHOT).
7048a98ec7cSDarrick J. Wong   * - 0x100
7058a98ec7cSDarrick J. Wong     - `Quota <Quota>`__ (RO\_COMPAT\_QUOTA).
7068a98ec7cSDarrick J. Wong   * - 0x200
7078a98ec7cSDarrick J. Wong     - This filesystem supports “bigalloc”, which means that file extents are
7088a98ec7cSDarrick J. Wong       tracked in units of clusters (of blocks) instead of blocks
7098a98ec7cSDarrick J. Wong       (RO\_COMPAT\_BIGALLOC).
7108a98ec7cSDarrick J. Wong   * - 0x400
7118a98ec7cSDarrick J. Wong     - This filesystem supports metadata checksumming.
7128a98ec7cSDarrick J. Wong       (RO\_COMPAT\_METADATA\_CSUM; implies RO\_COMPAT\_GDT\_CSUM, though
7138a98ec7cSDarrick J. Wong       GDT\_CSUM must not be set)
7148a98ec7cSDarrick J. Wong   * - 0x800
7158a98ec7cSDarrick J. Wong     - Filesystem supports replicas. This feature is neither in the kernel nor
7168a98ec7cSDarrick J. Wong       e2fsprogs. (RO\_COMPAT\_REPLICA)
7178a98ec7cSDarrick J. Wong   * - 0x1000
7188a98ec7cSDarrick J. Wong     - Read-only filesystem image; the kernel will not mount this image
7198a98ec7cSDarrick J. Wong       read-write and most tools will refuse to write to the image.
7208a98ec7cSDarrick J. Wong       (RO\_COMPAT\_READONLY)
7218a98ec7cSDarrick J. Wong   * - 0x2000
7228a98ec7cSDarrick J. Wong     - Filesystem tracks project quotas. (RO\_COMPAT\_PROJECT)
72384fb7ca4SEric Biggers   * - 0x8000
72484fb7ca4SEric Biggers     - Verity inodes may be present on the filesystem. (RO\_COMPAT\_VERITY)
725*3a6541e9SJan Kara   * - 0x10000
726*3a6541e9SJan Kara     - Indicates orphan file may have valid orphan entries and thus we need
727*3a6541e9SJan Kara       to clean them up when mounting the filesystem
728*3a6541e9SJan Kara       (RO\_COMPAT\_ORPHAN\_PRESENT).
7298a98ec7cSDarrick J. Wong
7308a98ec7cSDarrick J. Wong.. _super_def_hash:
7318a98ec7cSDarrick J. Wong
7328a98ec7cSDarrick J. WongThe ``s_def_hash_version`` field is one of the following:
7338a98ec7cSDarrick J. Wong
7348a98ec7cSDarrick J. Wong.. list-table::
7358a98ec7cSDarrick J. Wong   :widths: 8 72
7368a98ec7cSDarrick J. Wong   :header-rows: 1
7378a98ec7cSDarrick J. Wong
7388a98ec7cSDarrick J. Wong   * - Value
7398a98ec7cSDarrick J. Wong     - Description
7408a98ec7cSDarrick J. Wong   * - 0x0
7418a98ec7cSDarrick J. Wong     - Legacy.
7428a98ec7cSDarrick J. Wong   * - 0x1
7438a98ec7cSDarrick J. Wong     - Half MD4.
7448a98ec7cSDarrick J. Wong   * - 0x2
7458a98ec7cSDarrick J. Wong     - Tea.
7468a98ec7cSDarrick J. Wong   * - 0x3
7478a98ec7cSDarrick J. Wong     - Legacy, unsigned.
7488a98ec7cSDarrick J. Wong   * - 0x4
7498a98ec7cSDarrick J. Wong     - Half MD4, unsigned.
7508a98ec7cSDarrick J. Wong   * - 0x5
7518a98ec7cSDarrick J. Wong     - Tea, unsigned.
7528a98ec7cSDarrick J. Wong
7538a98ec7cSDarrick J. Wong.. _super_mountopts:
7548a98ec7cSDarrick J. Wong
7558a98ec7cSDarrick J. WongThe ``s_default_mount_opts`` field is any combination of the following:
7568a98ec7cSDarrick J. Wong
7578a98ec7cSDarrick J. Wong.. list-table::
7588a98ec7cSDarrick J. Wong   :widths: 8 72
7598a98ec7cSDarrick J. Wong   :header-rows: 1
7608a98ec7cSDarrick J. Wong
7618a98ec7cSDarrick J. Wong   * - Value
7628a98ec7cSDarrick J. Wong     - Description
7638a98ec7cSDarrick J. Wong   * - 0x0001
7648a98ec7cSDarrick J. Wong     - Print debugging info upon (re)mount. (EXT4\_DEFM\_DEBUG)
7658a98ec7cSDarrick J. Wong   * - 0x0002
7668a98ec7cSDarrick J. Wong     - New files take the gid of the containing directory (instead of the fsgid
7678a98ec7cSDarrick J. Wong       of the current process). (EXT4\_DEFM\_BSDGROUPS)
7688a98ec7cSDarrick J. Wong   * - 0x0004
7698a98ec7cSDarrick J. Wong     - Support userspace-provided extended attributes. (EXT4\_DEFM\_XATTR\_USER)
7708a98ec7cSDarrick J. Wong   * - 0x0008
7718a98ec7cSDarrick J. Wong     - Support POSIX access control lists (ACLs). (EXT4\_DEFM\_ACL)
7728a98ec7cSDarrick J. Wong   * - 0x0010
7738a98ec7cSDarrick J. Wong     - Do not support 32-bit UIDs. (EXT4\_DEFM\_UID16)
7748a98ec7cSDarrick J. Wong   * - 0x0020
7758a98ec7cSDarrick J. Wong     - All data and metadata are commited to the journal.
7768a98ec7cSDarrick J. Wong       (EXT4\_DEFM\_JMODE\_DATA)
7778a98ec7cSDarrick J. Wong   * - 0x0040
7788a98ec7cSDarrick J. Wong     - All data are flushed to the disk before metadata are committed to the
7798a98ec7cSDarrick J. Wong       journal. (EXT4\_DEFM\_JMODE\_ORDERED)
7808a98ec7cSDarrick J. Wong   * - 0x0060
7818a98ec7cSDarrick J. Wong     - Data ordering is not preserved; data may be written after the metadata
7828a98ec7cSDarrick J. Wong       has been written. (EXT4\_DEFM\_JMODE\_WBACK)
7838a98ec7cSDarrick J. Wong   * - 0x0100
7848a98ec7cSDarrick J. Wong     - Disable write flushes. (EXT4\_DEFM\_NOBARRIER)
7858a98ec7cSDarrick J. Wong   * - 0x0200
7868a98ec7cSDarrick J. Wong     - Track which blocks in a filesystem are metadata and therefore should not
7878a98ec7cSDarrick J. Wong       be used as data blocks. This option will be enabled by default on 3.18,
7888a98ec7cSDarrick J. Wong       hopefully. (EXT4\_DEFM\_BLOCK\_VALIDITY)
7898a98ec7cSDarrick J. Wong   * - 0x0400
7908a98ec7cSDarrick J. Wong     - Enable DISCARD support, where the storage device is told about blocks
7918a98ec7cSDarrick J. Wong       becoming unused. (EXT4\_DEFM\_DISCARD)
7928a98ec7cSDarrick J. Wong   * - 0x0800
7938a98ec7cSDarrick J. Wong     - Disable delayed allocation. (EXT4\_DEFM\_NODELALLOC)
7948a98ec7cSDarrick J. Wong
7958a98ec7cSDarrick J. Wong.. _super_flags:
7968a98ec7cSDarrick J. Wong
7978a98ec7cSDarrick J. WongThe ``s_flags`` field is any combination of the following:
7988a98ec7cSDarrick J. Wong
7998a98ec7cSDarrick J. Wong.. list-table::
8008a98ec7cSDarrick J. Wong   :widths: 8 72
8018a98ec7cSDarrick J. Wong   :header-rows: 1
8028a98ec7cSDarrick J. Wong
8038a98ec7cSDarrick J. Wong   * - Value
8048a98ec7cSDarrick J. Wong     - Description
8058a98ec7cSDarrick J. Wong   * - 0x0001
8068a98ec7cSDarrick J. Wong     - Signed directory hash in use.
8078a98ec7cSDarrick J. Wong   * - 0x0002
8088a98ec7cSDarrick J. Wong     - Unsigned directory hash in use.
8098a98ec7cSDarrick J. Wong   * - 0x0004
8108a98ec7cSDarrick J. Wong     - To test development code.
8118a98ec7cSDarrick J. Wong
8128a98ec7cSDarrick J. Wong.. _super_encrypt:
8138a98ec7cSDarrick J. Wong
8148a98ec7cSDarrick J. WongThe ``s_encrypt_algos`` list can contain any of the following:
8158a98ec7cSDarrick J. Wong
8168a98ec7cSDarrick J. Wong.. list-table::
8178a98ec7cSDarrick J. Wong   :widths: 8 72
8188a98ec7cSDarrick J. Wong   :header-rows: 1
8198a98ec7cSDarrick J. Wong
8208a98ec7cSDarrick J. Wong   * - Value
8218a98ec7cSDarrick J. Wong     - Description
8228a98ec7cSDarrick J. Wong   * - 0
8238a98ec7cSDarrick J. Wong     - Invalid algorithm (ENCRYPTION\_MODE\_INVALID).
8248a98ec7cSDarrick J. Wong   * - 1
8258a98ec7cSDarrick J. Wong     - 256-bit AES in XTS mode (ENCRYPTION\_MODE\_AES\_256\_XTS).
8268a98ec7cSDarrick J. Wong   * - 2
8278a98ec7cSDarrick J. Wong     - 256-bit AES in GCM mode (ENCRYPTION\_MODE\_AES\_256\_GCM).
8288a98ec7cSDarrick J. Wong   * - 3
8298a98ec7cSDarrick J. Wong     - 256-bit AES in CBC mode (ENCRYPTION\_MODE\_AES\_256\_CBC).
8308a98ec7cSDarrick J. Wong
8318a98ec7cSDarrick J. WongTotal size of the superblock is 1024 bytes.
832