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 - \_\_u8 332 - s\_encryption\_level 333 - Versioning level for encryption. 334 * - 0x177 335 - \_\_u8 336 - s\_reserved\_pad 337 - Padding to next 32bits. 338 * - 0x178 339 - __le64 340 - s_kbytes_written 341 - Number of KiB written to this filesystem over its lifetime. 342 * - 0x180 343 - __le32 344 - s_snapshot_inum 345 - inode number of active snapshot. (Not used in e2fsprogs/Linux.) 346 * - 0x184 347 - __le32 348 - s_snapshot_id 349 - Sequential ID of active snapshot. (Not used in e2fsprogs/Linux.) 350 * - 0x188 351 - __le64 352 - s_snapshot_r_blocks_count 353 - Number of blocks reserved for active snapshot's future use. (Not used in 354 e2fsprogs/Linux.) 355 * - 0x190 356 - __le32 357 - s_snapshot_list 358 - inode number of the head of the on-disk snapshot list. (Not used in 359 e2fsprogs/Linux.) 360 * - 0x194 361 - __le32 362 - s_error_count 363 - Number of errors seen. 364 * - 0x198 365 - __le32 366 - s_first_error_time 367 - First time an error happened, in seconds since the epoch. 368 * - 0x19C 369 - __le32 370 - s_first_error_ino 371 - inode involved in first error. 372 * - 0x1A0 373 - __le64 374 - s_first_error_block 375 - Number of block involved of first error. 376 * - 0x1A8 377 - __u8 378 - s_first_error_func[32] 379 - Name of function where the error happened. 380 * - 0x1C8 381 - __le32 382 - s_first_error_line 383 - Line number where error happened. 384 * - 0x1CC 385 - __le32 386 - s_last_error_time 387 - Time of most recent error, in seconds since the epoch. 388 * - 0x1D0 389 - __le32 390 - s_last_error_ino 391 - inode involved in most recent error. 392 * - 0x1D4 393 - __le32 394 - s_last_error_line 395 - Line number where most recent error happened. 396 * - 0x1D8 397 - __le64 398 - s_last_error_block 399 - Number of block involved in most recent error. 400 * - 0x1E0 401 - __u8 402 - s_last_error_func[32] 403 - Name of function where the most recent error happened. 404 * - 0x200 405 - __u8 406 - s_mount_opts[64] 407 - ASCIIZ string of mount options. 408 * - 0x240 409 - __le32 410 - s_usr_quota_inum 411 - Inode number of user `quota <quota>`__ file. 412 * - 0x244 413 - __le32 414 - s_grp_quota_inum 415 - Inode number of group `quota <quota>`__ file. 416 * - 0x248 417 - __le32 418 - s_overhead_blocks 419 - Overhead blocks/clusters in fs. (Huh? This field is always zero, which 420 means that the kernel calculates it dynamically.) 421 * - 0x24C 422 - __le32 423 - s_backup_bgs[2] 424 - Block groups containing superblock backups (if sparse_super2) 425 * - 0x254 426 - __u8 427 - s_encrypt_algos[4] 428 - Encryption algorithms in use. There can be up to four algorithms in use 429 at any time; valid algorithm codes are given in the super_encrypt_ table 430 below. 431 * - 0x258 432 - __u8 433 - s_encrypt_pw_salt[16] 434 - Salt for the string2key algorithm for encryption. 435 * - 0x268 436 - __le32 437 - s_lpf_ino 438 - Inode number of lost+found 439 * - 0x26C 440 - __le32 441 - s_prj_quota_inum 442 - Inode that tracks project quotas. 443 * - 0x270 444 - __le32 445 - s_checksum_seed 446 - Checksum seed used for metadata_csum calculations. This value is 447 crc32c(~0, $orig_fs_uuid). 448 * - 0x274 449 - __u8 450 - s_wtime_hi 451 - Upper 8 bits of the s_wtime field. 452 * - 0x275 453 - __u8 454 - s_mtime_hi 455 - Upper 8 bits of the s_mtime field. 456 * - 0x276 457 - __u8 458 - s_mkfs_time_hi 459 - Upper 8 bits of the s_mkfs_time field. 460 * - 0x277 461 - __u8 462 - s_lastcheck_hi 463 - Upper 8 bits of the s_lastcheck field. 464 * - 0x278 465 - __u8 466 - s_first_error_time_hi 467 - Upper 8 bits of the s_first_error_time field. 468 * - 0x279 469 - __u8 470 - s_last_error_time_hi 471 - Upper 8 bits of the s_last_error_time field. 472 * - 0x27A 473 - \_\_u8 474 - s\_first\_error\_errcode 475 - 476 * - 0x27B 477 - \_\_u8 478 - s\_last\_error\_errcode 479 - 480 * - 0x27C 481 - __le16 482 - s_encoding 483 - Filename charset encoding. 484 * - 0x27E 485 - __le16 486 - s_encoding_flags 487 - Filename charset encoding flags. 488 * - 0x280 489 - __le32 490 - s_orphan_file_inum 491 - Orphan file inode number. 492 * - 0x284 493 - __le32 494 - s_reserved[94] 495 - Padding to the end of the block. 496 * - 0x3FC 497 - __le32 498 - s_checksum 499 - Superblock checksum. 500 501.. _super_state: 502 503The superblock state is some combination of the following: 504 505.. list-table:: 506 :widths: 8 72 507 :header-rows: 1 508 509 * - Value 510 - Description 511 * - 0x0001 512 - Cleanly umounted 513 * - 0x0002 514 - Errors detected 515 * - 0x0004 516 - Orphans being recovered 517 518.. _super_errors: 519 520The superblock error policy is one of the following: 521 522.. list-table:: 523 :widths: 8 72 524 :header-rows: 1 525 526 * - Value 527 - Description 528 * - 1 529 - Continue 530 * - 2 531 - Remount read-only 532 * - 3 533 - Panic 534 535.. _super_creator: 536 537The filesystem creator is one of the following: 538 539.. list-table:: 540 :widths: 8 72 541 :header-rows: 1 542 543 * - Value 544 - Description 545 * - 0 546 - Linux 547 * - 1 548 - Hurd 549 * - 2 550 - Masix 551 * - 3 552 - FreeBSD 553 * - 4 554 - Lites 555 556.. _super_revision: 557 558The superblock revision is one of the following: 559 560.. list-table:: 561 :widths: 8 72 562 :header-rows: 1 563 564 * - Value 565 - Description 566 * - 0 567 - Original format 568 * - 1 569 - v2 format w/ dynamic inode sizes 570 571Note that ``EXT4_DYNAMIC_REV`` refers to a revision 1 or newer filesystem. 572 573.. _super_compat: 574 575The superblock compatible features field is a combination of any of the 576following: 577 578.. list-table:: 579 :widths: 16 64 580 :header-rows: 1 581 582 * - Value 583 - Description 584 * - 0x1 585 - Directory preallocation (COMPAT_DIR_PREALLOC). 586 * - 0x2 587 - “imagic inodes”. Not clear from the code what this does 588 (COMPAT_IMAGIC_INODES). 589 * - 0x4 590 - Has a journal (COMPAT_HAS_JOURNAL). 591 * - 0x8 592 - Supports extended attributes (COMPAT_EXT_ATTR). 593 * - 0x10 594 - Has reserved GDT blocks for filesystem expansion 595 (COMPAT_RESIZE_INODE). Requires RO_COMPAT_SPARSE_SUPER. 596 * - 0x20 597 - Has directory indices (COMPAT_DIR_INDEX). 598 * - 0x40 599 - “Lazy BG”. Not in Linux kernel, seems to have been for uninitialized 600 block groups? (COMPAT_LAZY_BG) 601 * - 0x80 602 - “Exclude inode”. Not used. (COMPAT_EXCLUDE_INODE). 603 * - 0x100 604 - “Exclude bitmap”. Seems to be used to indicate the presence of 605 snapshot-related exclude bitmaps? Not defined in kernel or used in 606 e2fsprogs (COMPAT_EXCLUDE_BITMAP). 607 * - 0x200 608 - Sparse Super Block, v2. If this flag is set, the SB field s_backup_bgs 609 points to the two block groups that contain backup superblocks 610 (COMPAT_SPARSE_SUPER2). 611 * - 0x400 612 - Fast commits supported. Although fast commits blocks are 613 backward incompatible, fast commit blocks are not always 614 present in the journal. If fast commit blocks are present in 615 the journal, JBD2 incompat feature 616 (JBD2_FEATURE_INCOMPAT_FAST_COMMIT) gets 617 set (COMPAT_FAST_COMMIT). 618 * - 0x1000 619 - Orphan file allocated. This is the special file for more efficient 620 tracking of unlinked but still open inodes. When there may be any 621 entries in the file, we additionally set proper rocompat feature 622 (RO_COMPAT_ORPHAN_PRESENT). 623 624.. _super_incompat: 625 626The superblock incompatible features field is a combination of any of the 627following: 628 629.. list-table:: 630 :widths: 16 64 631 :header-rows: 1 632 633 * - Value 634 - Description 635 * - 0x1 636 - Compression (INCOMPAT_COMPRESSION). 637 * - 0x2 638 - Directory entries record the file type. See ext4_dir_entry_2 below 639 (INCOMPAT_FILETYPE). 640 * - 0x4 641 - Filesystem needs recovery (INCOMPAT_RECOVER). 642 * - 0x8 643 - Filesystem has a separate journal device (INCOMPAT_JOURNAL_DEV). 644 * - 0x10 645 - Meta block groups. See the earlier discussion of this feature 646 (INCOMPAT_META_BG). 647 * - 0x40 648 - Files in this filesystem use extents (INCOMPAT_EXTENTS). 649 * - 0x80 650 - Enable a filesystem size of 2^64 blocks (INCOMPAT_64BIT). 651 * - 0x100 652 - Multiple mount protection (INCOMPAT_MMP). 653 * - 0x200 654 - Flexible block groups. See the earlier discussion of this feature 655 (INCOMPAT_FLEX_BG). 656 * - 0x400 657 - Inodes can be used to store large extended attribute values 658 (INCOMPAT_EA_INODE). 659 * - 0x1000 660 - Data in directory entry (INCOMPAT_DIRDATA). (Not implemented?) 661 * - 0x2000 662 - Metadata checksum seed is stored in the superblock. This feature enables 663 the administrator to change the UUID of a metadata_csum filesystem 664 while the filesystem is mounted; without it, the checksum definition 665 requires all metadata blocks to be rewritten (INCOMPAT_CSUM_SEED). 666 * - 0x4000 667 - Large directory >2GB or 3-level htree (INCOMPAT_LARGEDIR). Prior to 668 this feature, directories could not be larger than 4GiB and could not 669 have an htree more than 2 levels deep. If this feature is enabled, 670 directories can be larger than 4GiB and have a maximum htree depth of 3. 671 * - 0x8000 672 - Data in inode (INCOMPAT_INLINE_DATA). 673 * - 0x10000 674 - Encrypted inodes are present on the filesystem. (INCOMPAT_ENCRYPT). 675 676.. _super_rocompat: 677 678The superblock read-only compatible features field is a combination of any of 679the following: 680 681.. list-table:: 682 :widths: 16 64 683 :header-rows: 1 684 685 * - Value 686 - Description 687 * - 0x1 688 - Sparse superblocks. See the earlier discussion of this feature 689 (RO_COMPAT_SPARSE_SUPER). 690 * - 0x2 691 - This filesystem has been used to store a file greater than 2GiB 692 (RO_COMPAT_LARGE_FILE). 693 * - 0x4 694 - Not used in kernel or e2fsprogs (RO_COMPAT_BTREE_DIR). 695 * - 0x8 696 - This filesystem has files whose sizes are represented in units of 697 logical blocks, not 512-byte sectors. This implies a very large file 698 indeed! (RO_COMPAT_HUGE_FILE) 699 * - 0x10 700 - Group descriptors have checksums. In addition to detecting corruption, 701 this is useful for lazy formatting with uninitialized groups 702 (RO_COMPAT_GDT_CSUM). 703 * - 0x20 704 - Indicates that the old ext3 32,000 subdirectory limit no longer applies 705 (RO_COMPAT_DIR_NLINK). A directory's i_links_count will be set to 1 706 if it is incremented past 64,999. 707 * - 0x40 708 - Indicates that large inodes exist on this filesystem 709 (RO_COMPAT_EXTRA_ISIZE). 710 * - 0x80 711 - This filesystem has a snapshot (RO_COMPAT_HAS_SNAPSHOT). 712 * - 0x100 713 - `Quota <Quota>`__ (RO_COMPAT_QUOTA). 714 * - 0x200 715 - This filesystem supports “bigalloc”, which means that file extents are 716 tracked in units of clusters (of blocks) instead of blocks 717 (RO_COMPAT_BIGALLOC). 718 * - 0x400 719 - This filesystem supports metadata checksumming. 720 (RO_COMPAT_METADATA_CSUM; implies RO_COMPAT_GDT_CSUM, though 721 GDT_CSUM must not be set) 722 * - 0x800 723 - Filesystem supports replicas. This feature is neither in the kernel nor 724 e2fsprogs. (RO_COMPAT_REPLICA) 725 * - 0x1000 726 - Read-only filesystem image; the kernel will not mount this image 727 read-write and most tools will refuse to write to the image. 728 (RO_COMPAT_READONLY) 729 * - 0x2000 730 - Filesystem tracks project quotas. (RO_COMPAT_PROJECT) 731 * - 0x8000 732 - Verity inodes may be present on the filesystem. (RO_COMPAT_VERITY) 733 * - 0x10000 734 - Indicates orphan file may have valid orphan entries and thus we need 735 to clean them up when mounting the filesystem 736 (RO_COMPAT_ORPHAN_PRESENT). 737 738.. _super_def_hash: 739 740The ``s_def_hash_version`` field is one of the following: 741 742.. list-table:: 743 :widths: 8 72 744 :header-rows: 1 745 746 * - Value 747 - Description 748 * - 0x0 749 - Legacy. 750 * - 0x1 751 - Half MD4. 752 * - 0x2 753 - Tea. 754 * - 0x3 755 - Legacy, unsigned. 756 * - 0x4 757 - Half MD4, unsigned. 758 * - 0x5 759 - Tea, unsigned. 760 761.. _super_mountopts: 762 763The ``s_default_mount_opts`` field is any combination of the following: 764 765.. list-table:: 766 :widths: 8 72 767 :header-rows: 1 768 769 * - Value 770 - Description 771 * - 0x0001 772 - Print debugging info upon (re)mount. (EXT4_DEFM_DEBUG) 773 * - 0x0002 774 - New files take the gid of the containing directory (instead of the fsgid 775 of the current process). (EXT4_DEFM_BSDGROUPS) 776 * - 0x0004 777 - Support userspace-provided extended attributes. (EXT4_DEFM_XATTR_USER) 778 * - 0x0008 779 - Support POSIX access control lists (ACLs). (EXT4_DEFM_ACL) 780 * - 0x0010 781 - Do not support 32-bit UIDs. (EXT4_DEFM_UID16) 782 * - 0x0020 783 - All data and metadata are committed to the journal. 784 (EXT4_DEFM_JMODE_DATA) 785 * - 0x0040 786 - All data are flushed to the disk before metadata are committed to the 787 journal. (EXT4_DEFM_JMODE_ORDERED) 788 * - 0x0060 789 - Data ordering is not preserved; data may be written after the metadata 790 has been written. (EXT4_DEFM_JMODE_WBACK) 791 * - 0x0100 792 - Disable write flushes. (EXT4_DEFM_NOBARRIER) 793 * - 0x0200 794 - Track which blocks in a filesystem are metadata and therefore should not 795 be used as data blocks. This option will be enabled by default on 3.18, 796 hopefully. (EXT4_DEFM_BLOCK_VALIDITY) 797 * - 0x0400 798 - Enable DISCARD support, where the storage device is told about blocks 799 becoming unused. (EXT4_DEFM_DISCARD) 800 * - 0x0800 801 - Disable delayed allocation. (EXT4_DEFM_NODELALLOC) 802 803.. _super_flags: 804 805The ``s_flags`` field is any combination of the following: 806 807.. list-table:: 808 :widths: 8 72 809 :header-rows: 1 810 811 * - Value 812 - Description 813 * - 0x0001 814 - Signed directory hash in use. 815 * - 0x0002 816 - Unsigned directory hash in use. 817 * - 0x0004 818 - To test development code. 819 820.. _super_encrypt: 821 822The ``s_encrypt_algos`` list can contain any of the following: 823 824.. list-table:: 825 :widths: 8 72 826 :header-rows: 1 827 828 * - Value 829 - Description 830 * - 0 831 - Invalid algorithm (ENCRYPTION_MODE_INVALID). 832 * - 1 833 - 256-bit AES in XTS mode (ENCRYPTION_MODE_AES_256_XTS). 834 * - 2 835 - 256-bit AES in GCM mode (ENCRYPTION_MODE_AES_256_GCM). 836 * - 3 837 - 256-bit AES in CBC mode (ENCRYPTION_MODE_AES_256_CBC). 838 839Total size of the superblock is 1024 bytes. 840