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