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\_reserved[95] 483 - Padding to the end of the block. 484 * - 0x3FC 485 - \_\_le32 486 - s\_checksum 487 - Superblock checksum. 488 489.. _super_state: 490 491The superblock state is some combination of the following: 492 493.. list-table:: 494 :widths: 8 72 495 :header-rows: 1 496 497 * - Value 498 - Description 499 * - 0x0001 500 - Cleanly umounted 501 * - 0x0002 502 - Errors detected 503 * - 0x0004 504 - Orphans being recovered 505 506.. _super_errors: 507 508The superblock error policy is one of the following: 509 510.. list-table:: 511 :widths: 8 72 512 :header-rows: 1 513 514 * - Value 515 - Description 516 * - 1 517 - Continue 518 * - 2 519 - Remount read-only 520 * - 3 521 - Panic 522 523.. _super_creator: 524 525The filesystem creator is one of the following: 526 527.. list-table:: 528 :widths: 8 72 529 :header-rows: 1 530 531 * - Value 532 - Description 533 * - 0 534 - Linux 535 * - 1 536 - Hurd 537 * - 2 538 - Masix 539 * - 3 540 - FreeBSD 541 * - 4 542 - Lites 543 544.. _super_revision: 545 546The superblock revision is one of the following: 547 548.. list-table:: 549 :widths: 8 72 550 :header-rows: 1 551 552 * - Value 553 - Description 554 * - 0 555 - Original format 556 * - 1 557 - v2 format w/ dynamic inode sizes 558 559Note that ``EXT4_DYNAMIC_REV`` refers to a revision 1 or newer filesystem. 560 561.. _super_compat: 562 563The superblock compatible features field is a combination of any of the 564following: 565 566.. list-table:: 567 :widths: 16 64 568 :header-rows: 1 569 570 * - Value 571 - Description 572 * - 0x1 573 - Directory preallocation (COMPAT\_DIR\_PREALLOC). 574 * - 0x2 575 - “imagic inodes”. Not clear from the code what this does 576 (COMPAT\_IMAGIC\_INODES). 577 * - 0x4 578 - Has a journal (COMPAT\_HAS\_JOURNAL). 579 * - 0x8 580 - Supports extended attributes (COMPAT\_EXT\_ATTR). 581 * - 0x10 582 - Has reserved GDT blocks for filesystem expansion 583 (COMPAT\_RESIZE\_INODE). Requires RO\_COMPAT\_SPARSE\_SUPER. 584 * - 0x20 585 - Has directory indices (COMPAT\_DIR\_INDEX). 586 * - 0x40 587 - “Lazy BG”. Not in Linux kernel, seems to have been for uninitialized 588 block groups? (COMPAT\_LAZY\_BG) 589 * - 0x80 590 - “Exclude inode”. Not used. (COMPAT\_EXCLUDE\_INODE). 591 * - 0x100 592 - “Exclude bitmap”. Seems to be used to indicate the presence of 593 snapshot-related exclude bitmaps? Not defined in kernel or used in 594 e2fsprogs (COMPAT\_EXCLUDE\_BITMAP). 595 * - 0x200 596 - Sparse Super Block, v2. If this flag is set, the SB field s\_backup\_bgs 597 points to the two block groups that contain backup superblocks 598 (COMPAT\_SPARSE\_SUPER2). 599 600.. _super_incompat: 601 602The superblock incompatible features field is a combination of any of the 603following: 604 605.. list-table:: 606 :widths: 16 64 607 :header-rows: 1 608 609 * - Value 610 - Description 611 * - 0x1 612 - Compression (INCOMPAT\_COMPRESSION). 613 * - 0x2 614 - Directory entries record the file type. See ext4\_dir\_entry\_2 below 615 (INCOMPAT\_FILETYPE). 616 * - 0x4 617 - Filesystem needs recovery (INCOMPAT\_RECOVER). 618 * - 0x8 619 - Filesystem has a separate journal device (INCOMPAT\_JOURNAL\_DEV). 620 * - 0x10 621 - Meta block groups. See the earlier discussion of this feature 622 (INCOMPAT\_META\_BG). 623 * - 0x40 624 - Files in this filesystem use extents (INCOMPAT\_EXTENTS). 625 * - 0x80 626 - Enable a filesystem size of 2^64 blocks (INCOMPAT\_64BIT). 627 * - 0x100 628 - Multiple mount protection (INCOMPAT\_MMP). 629 * - 0x200 630 - Flexible block groups. See the earlier discussion of this feature 631 (INCOMPAT\_FLEX\_BG). 632 * - 0x400 633 - Inodes can be used to store large extended attribute values 634 (INCOMPAT\_EA\_INODE). 635 * - 0x1000 636 - Data in directory entry (INCOMPAT\_DIRDATA). (Not implemented?) 637 * - 0x2000 638 - Metadata checksum seed is stored in the superblock. This feature enables 639 the administrator to change the UUID of a metadata\_csum filesystem 640 while the filesystem is mounted; without it, the checksum definition 641 requires all metadata blocks to be rewritten (INCOMPAT\_CSUM\_SEED). 642 * - 0x4000 643 - Large directory >2GB or 3-level htree (INCOMPAT\_LARGEDIR). Prior to 644 this feature, directories could not be larger than 4GiB and could not 645 have an htree more than 2 levels deep. If this feature is enabled, 646 directories can be larger than 4GiB and have a maximum htree depth of 3. 647 * - 0x8000 648 - Data in inode (INCOMPAT\_INLINE\_DATA). 649 * - 0x10000 650 - Encrypted inodes are present on the filesystem. (INCOMPAT\_ENCRYPT). 651 652.. _super_rocompat: 653 654The superblock read-only compatible features field is a combination of any of 655the following: 656 657.. list-table:: 658 :widths: 16 64 659 :header-rows: 1 660 661 * - Value 662 - Description 663 * - 0x1 664 - Sparse superblocks. See the earlier discussion of this feature 665 (RO\_COMPAT\_SPARSE\_SUPER). 666 * - 0x2 667 - This filesystem has been used to store a file greater than 2GiB 668 (RO\_COMPAT\_LARGE\_FILE). 669 * - 0x4 670 - Not used in kernel or e2fsprogs (RO\_COMPAT\_BTREE\_DIR). 671 * - 0x8 672 - This filesystem has files whose sizes are represented in units of 673 logical blocks, not 512-byte sectors. This implies a very large file 674 indeed! (RO\_COMPAT\_HUGE\_FILE) 675 * - 0x10 676 - Group descriptors have checksums. In addition to detecting corruption, 677 this is useful for lazy formatting with uninitialized groups 678 (RO\_COMPAT\_GDT\_CSUM). 679 * - 0x20 680 - Indicates that the old ext3 32,000 subdirectory limit no longer applies 681 (RO\_COMPAT\_DIR\_NLINK). A directory's i\_links\_count will be set to 1 682 if it is incremented past 64,999. 683 * - 0x40 684 - Indicates that large inodes exist on this filesystem 685 (RO\_COMPAT\_EXTRA\_ISIZE). 686 * - 0x80 687 - This filesystem has a snapshot (RO\_COMPAT\_HAS\_SNAPSHOT). 688 * - 0x100 689 - `Quota <Quota>`__ (RO\_COMPAT\_QUOTA). 690 * - 0x200 691 - This filesystem supports “bigalloc”, which means that file extents are 692 tracked in units of clusters (of blocks) instead of blocks 693 (RO\_COMPAT\_BIGALLOC). 694 * - 0x400 695 - This filesystem supports metadata checksumming. 696 (RO\_COMPAT\_METADATA\_CSUM; implies RO\_COMPAT\_GDT\_CSUM, though 697 GDT\_CSUM must not be set) 698 * - 0x800 699 - Filesystem supports replicas. This feature is neither in the kernel nor 700 e2fsprogs. (RO\_COMPAT\_REPLICA) 701 * - 0x1000 702 - Read-only filesystem image; the kernel will not mount this image 703 read-write and most tools will refuse to write to the image. 704 (RO\_COMPAT\_READONLY) 705 * - 0x2000 706 - Filesystem tracks project quotas. (RO\_COMPAT\_PROJECT) 707 * - 0x8000 708 - Verity inodes may be present on the filesystem. (RO\_COMPAT\_VERITY) 709 710.. _super_def_hash: 711 712The ``s_def_hash_version`` field is one of the following: 713 714.. list-table:: 715 :widths: 8 72 716 :header-rows: 1 717 718 * - Value 719 - Description 720 * - 0x0 721 - Legacy. 722 * - 0x1 723 - Half MD4. 724 * - 0x2 725 - Tea. 726 * - 0x3 727 - Legacy, unsigned. 728 * - 0x4 729 - Half MD4, unsigned. 730 * - 0x5 731 - Tea, unsigned. 732 733.. _super_mountopts: 734 735The ``s_default_mount_opts`` field is any combination of the following: 736 737.. list-table:: 738 :widths: 8 72 739 :header-rows: 1 740 741 * - Value 742 - Description 743 * - 0x0001 744 - Print debugging info upon (re)mount. (EXT4\_DEFM\_DEBUG) 745 * - 0x0002 746 - New files take the gid of the containing directory (instead of the fsgid 747 of the current process). (EXT4\_DEFM\_BSDGROUPS) 748 * - 0x0004 749 - Support userspace-provided extended attributes. (EXT4\_DEFM\_XATTR\_USER) 750 * - 0x0008 751 - Support POSIX access control lists (ACLs). (EXT4\_DEFM\_ACL) 752 * - 0x0010 753 - Do not support 32-bit UIDs. (EXT4\_DEFM\_UID16) 754 * - 0x0020 755 - All data and metadata are commited to the journal. 756 (EXT4\_DEFM\_JMODE\_DATA) 757 * - 0x0040 758 - All data are flushed to the disk before metadata are committed to the 759 journal. (EXT4\_DEFM\_JMODE\_ORDERED) 760 * - 0x0060 761 - Data ordering is not preserved; data may be written after the metadata 762 has been written. (EXT4\_DEFM\_JMODE\_WBACK) 763 * - 0x0100 764 - Disable write flushes. (EXT4\_DEFM\_NOBARRIER) 765 * - 0x0200 766 - Track which blocks in a filesystem are metadata and therefore should not 767 be used as data blocks. This option will be enabled by default on 3.18, 768 hopefully. (EXT4\_DEFM\_BLOCK\_VALIDITY) 769 * - 0x0400 770 - Enable DISCARD support, where the storage device is told about blocks 771 becoming unused. (EXT4\_DEFM\_DISCARD) 772 * - 0x0800 773 - Disable delayed allocation. (EXT4\_DEFM\_NODELALLOC) 774 775.. _super_flags: 776 777The ``s_flags`` field is any combination of the following: 778 779.. list-table:: 780 :widths: 8 72 781 :header-rows: 1 782 783 * - Value 784 - Description 785 * - 0x0001 786 - Signed directory hash in use. 787 * - 0x0002 788 - Unsigned directory hash in use. 789 * - 0x0004 790 - To test development code. 791 792.. _super_encrypt: 793 794The ``s_encrypt_algos`` list can contain any of the following: 795 796.. list-table:: 797 :widths: 8 72 798 :header-rows: 1 799 800 * - Value 801 - Description 802 * - 0 803 - Invalid algorithm (ENCRYPTION\_MODE\_INVALID). 804 * - 1 805 - 256-bit AES in XTS mode (ENCRYPTION\_MODE\_AES\_256\_XTS). 806 * - 2 807 - 256-bit AES in GCM mode (ENCRYPTION\_MODE\_AES\_256\_GCM). 808 * - 3 809 - 256-bit AES in CBC mode (ENCRYPTION\_MODE\_AES\_256\_CBC). 810 811Total size of the superblock is 1024 bytes. 812