{
    "content": [
        {
            "type": "text",
            "text": "# ext2(5) (man)\n\n**Summary:** ext2 - the second extended file system ext3 - the third extended file system ext4 - the fourth extended file system\n\n## See Also\n\n- mke2fs(8)\n- mke2fs.conf(5)\n- e2fsck(8)\n- dumpe2fs(8)\n- tune2fs(8)\n- debugfs(8)\n- mount(8)\n- chattr(1)\n\n## Section Outline\n\n- **NAME** (4 lines)\n- **DESCRIPTION** (8 lines)\n- **FILE SYSTEM FEATURES** (6 lines) — 10 subsections\n  - 64bit (6 lines)\n  - bigalloc (14 lines)\n  - casefold (24 lines)\n  - encrypt (11 lines)\n  - extent (17 lines)\n  - filetype (62 lines)\n  - mmp (3 lines)\n  - project (3 lines)\n  - quota (45 lines)\n  - verity (9 lines)\n- **MOUNT OPTIONS** (3 lines) — 9 subsections\n  - Mount options for ext2 (52 lines)\n  - nouid32 (29 lines)\n  - Mount options for ext3 (70 lines)\n  - Mount options for ext4 (6 lines)\n  - pjquota, and jqfmt are backwardly compatible with ext3 or ex (26 lines)\n  - delalloc (2 lines)\n  - nodelalloc (92 lines)\n  - nombcache (4 lines)\n  - prjquota (5 lines)\n- **FILE ATTRIBUTES** (27 lines)\n- **KERNEL SUPPORT** (65 lines)\n- **SEE ALSO** (6 lines)\n\n## Full Content\n\n### NAME\n\next2 - the second extended file system\next3 - the third extended file system\next4 - the fourth extended file system\n\n### DESCRIPTION\n\nThe second, third, and fourth extended file systems, or ext2, ext3, and ext4 as they are com‐\nmonly known, are Linux file systems that have historically been the default file  system  for\nmany  Linux distributions.  They are general purpose file systems that have been designed for\nextensibility and backwards compatibility.  In particular, file systems  previously  intended\nfor use with the ext2 and ext3 file systems can be mounted using the ext4 file system driver,\nand indeed in many modern Linux distributions, the ext4 file system driver has  been  config‐\nured to handle mount requests for ext2 and ext3 file systems.\n\n### FILE SYSTEM FEATURES\n\nA  file  system  formatted  for ext2, ext3, or ext4 can have some collection of the following\nfile system feature flags enabled.  Some of these features are not supported by all implemen‐\ntations of the ext2, ext3, and ext4 file system drivers, depending on Linux kernel version in\nuse.  On other operating systems, such as the GNU/HURD or FreeBSD, only  a  very  restrictive\nset of file system features may be supported in their implementations of ext2.\n\n#### 64bit\n\nEnables  the file system to be larger than 2^32 blocks.  This feature is set automati‐\ncally, as needed, but it can be useful to specify this feature explicitly if the  file\nsystem  might  need to be resized larger than 2^32 blocks, even if it was smaller than\nthat threshold when it was originally created.  Note that some older kernels and older\nversions of e2fsprogs will not support file systems with this ext4 feature enabled.\n\n#### bigalloc\n\nThis  ext4  feature enables clustered block allocation, so that the unit of allocation\nis a power of two number of blocks.  That is, each bit in the what  had  traditionally\nbeen known as the block allocation bitmap now indicates whether a cluster is in use or\nnot, where a cluster is by default composed of 16 blocks.  This feature  can  decrease\nthe  time spent on doing block allocation and brings smaller fragmentation, especially\nfor large files.  The size can be specified using the mke2fs -C option.\n\nWarning: The bigalloc feature is still under development, and may not  be  fully  sup‐\nported  with  your  kernel  or  may  have  various  bugs.   Please  see  the  web page\nhttp://ext4.wiki.kernel.org/index.php/Bigalloc for details.  May  clash  with  delayed\nallocation (see nodelalloc mount option).\n\nThis feature requires that the extent feature be enabled.\n\n#### casefold\n\nThis  ext4  feature provides file system level character encoding support for directo‐\nries with the casefold (+F) flag enabled.  This  feature  is  name-preserving  on  the\ndisk,  but it allows applications to lookup for a file in the file system using an en‐\ncoding equivalent version of the file name.\n\ndirindex\nUse hashed b-trees to speed up name lookups in large  directories.   This  feature  is\nsupported by ext3 and ext4 file systems, and is ignored by ext2 file systems.\n\ndirnlink\nNormally,  ext4  allows an inode to have no more than 65,000 hard links.  This applies\nto regular files as well as directories, which means that there can be  no  more  than\n64,998  subdirectories  in  a  directory (because each of the '.' and '..' entries, as\nwell as the directory entry for the directory in its parent directory counts as a hard\nlink).   This feature lifts this limit by causing ext4 to use a link count of 1 to in‐\ndicate that the number of hard links to a directory is not known when the  link  count\nmight exceed the maximum count limit.\n\neainode\nNormally, a file's extended attributes and associated metadata must fit within the in‐\node or the inode's associated extended attribute block. This feature allows the  value\nof each extended attribute to be placed in the data blocks of a separate inode if nec‐\nessary, increasing the limit on the size and number of extended attributes per file.\n\n#### encrypt\n\nEnables support for file-system level encryption of data blocks and file  names.   The\ninode metadata (timestamps, file size, user/group ownership, etc.) is not encrypted.\n\nThis  feature  is  most  useful  on file systems with multiple users, or where not all\nfiles should be encrypted.  In many use cases, especially on single-user systems,  en‐\ncryption at the block device layer using dm-crypt may provide much better security.\n\nextattr\nThis  feature  enables  the  use of extended attributes.  This feature is supported by\next2, ext3, and ext4.\n\n#### extent\n\nThis ext4 feature allows the mapping of logical block numbers for a  particular  inode\nto physical blocks on the storage device to be stored using an extent tree, which is a\nmore efficient data structure than the traditional indirect block scheme used  by  the\next2 and ext3 file systems.  The use of the extent tree decreases metadata block over‐\nhead, improves file system performance, and decreases the needed to run  e2fsck(8)  on\nthe  file system.  (Note: both extent and extents are accepted as valid names for this\nfeature for historical/backwards compatibility reasons.)\n\nextraisize\nThis ext4 feature reserves a specific amount of space in each inode for extended meta‐\ndata  such as nanosecond timestamps and file creation time, even if the current kernel\ndoes not currently need to reserve this much space.  Without this feature, the  kernel\nwill  reserve the amount of space for features it currently needs, and the rest may be\nconsumed by extended attributes.\n\nFor this feature to be useful the inode size must be 256 bytes in size or larger.\n\n#### filetype\n\nThis feature enables the storage of file type information in directory entries.   This\nfeature is supported by ext2, ext3, and ext4.\n\nflexbg\nThis  ext4  feature  allows the per-block group metadata (allocation bitmaps and inode\ntables) to be placed anywhere on the storage media.  In addition,  mke2fs  will  place\nthe  per-block  group  metadata  together  starting  at  the first block group of each\n\"flexbg group\".   The size of the flexbg group can be specified using the -G option.\n\nhasjournal\nCreate a journal to ensure file system  consistency  even  across  unclean  shutdowns.\nSetting  the  file  system feature is equivalent to using the -j option with mke2fs or\ntune2fs.  This feature is supported by ext3 and ext4, and ignored  by  the  ext2  file\nsystem driver.\n\nhugefile\nThis ext4 feature allows files to be larger than 2 terabytes in size.\n\ninlinedata\nAllow data to be stored in the inode and extended attribute area.\n\njournaldev\nThis  feature  is  enabled on the superblock found on an external journal device.  The\nblock size for the external journal must be the same as the file system which uses it.\n\nThe external journal device can be used by a file system  by  specifying  the  -J  de‐‐\nvice=<external-device> option to mke2fs(8) or tune2fs(8).\n\nlargedir\nThis  feature  increases the limit on the number of files per directory by raising the\nmaximum size of directories and, for hashed b-tree directories  (see  dirindex),  the\nmaximum height of the hashed b-tree used to store the directory entries.\n\nlargefile\nThis feature flag is set automatically by modern kernels when a file larger than 2 gi‐\ngabytes is created.  Very old kernels could not handle large files,  so  this  feature\nflag was used to prohibit those kernels from mounting file systems that they could not\nunderstand.\n\nmetadatacsum\nThis ext4 feature enables metadata checksumming.  This feature  stores  checksums  for\nall  of the file system metadata (superblock, group descriptor blocks, inode and block\nbitmaps, directories, and extent tree blocks).  The checksum algorithm  used  for  the\nmetadata  blocks  is  different  than  the  one  used  for  group descriptors with the\nuninitbg feature.  These two features are incompatible and metadatacsum will be used\npreferentially instead of uninitbg.\n\nmetadatacsumseed\nThis  feature  allows  the  file system to store the metadata checksum seed in the su‐\nperblock, which allows the administrator to change the UUID of a file system using the\nmetadatacsum feature while it is mounted.\n\nmetabg\nThis ext4 feature allows file systems to be resized on-line without explicitly needing\nto reserve space for growth in the size of the block group descriptors.   This  scheme\nis also used to resize file systems which are larger than 2^32 blocks.  It is not rec‐\nommended that this feature be set when a file system is created, since this  alternate\nmethod  of storing the block group descriptors will slow down the time needed to mount\nthe file system, and newer kernels can automatically set  this  feature  as  necessary\nwhen  doing an online resize and no more reserved space is available in the resize in‐\node.\n\n#### mmp\n\nThis ext4 feature provides multiple mount protection (MMP).  MMP helps to protect  the\nfile system from being multiply mounted and is useful in shared storage environments.\n\n#### project\n\nThis ext4 feature provides project quota support. With this feature, the project ID of\ninode will be managed when the file system is mounted.\n\n#### quota\n\nCreate quota inodes (inode #3 for userquota and inode #4 for group quota) and set them\nin  the  superblock.  With this feature, the quotas will be enabled automatically when\nthe file system is mounted.\n\nCauses the quota files (i.e., user.quota and group.quota which existed  in  the  older\nquota design) to be hidden inodes.\n\nresizeinode\nThis  file  system  feature  indicates  that space has been reserved so that the block\ngroup descriptor table can be extended while resizing a mounted file system.  The  on‐\nline resize operation is carried out by the kernel, triggered by resize2fs(8).  By de‐\nfault mke2fs will attempt to reserve enough space so that the file system may grow  to\n1024 times its initial size.  This can be changed using the resize extended option.\n\nThis feature requires that the sparsesuper or sparsesuper2 feature be enabled.\n\nsparsesuper\nThis  file  system feature is set on all modern ext2, ext3, and ext4 file systems.  It\nindicates that backup copies of the superblock and block group descriptors are present\nonly in a few block groups, not all of them.\n\nsparsesuper2\nThis  feature  indicates  that  there  will only be at most two backup superblocks and\nblock group descriptors.  The block groups used to store the backup superblock(s)  and\nblockgroup  descriptor(s) are stored in the superblock, but typically, one will be lo‐\ncated at the beginning of block group #1, and one in the last block group in the  file\nsystem.  This feature is essentially a more extreme version of sparsesuper and is de‐\nsigned to allow a much larger percentage of the disk to have contiguous blocks  avail‐\nable for data files.\n\nstableinodes\nMarks the file system's inode numbers and UUID as stable.  resize2fs(8) will not allow\nshrinking a file system with this feature, nor  will  tune2fs(8)  allow  changing  its\nUUID.  This feature allows the use of specialized encryption settings that make use of\nthe inode numbers and UUID.  Note that the encrypt feature still needs to  be  enabled\nseparately.  stableinodes is a \"compat\" feature, so old kernels will allow it.\n\nuninitbg\nThis  ext4 file system feature indicates that the block group descriptors will be pro‐\ntected using checksums, making it safe for mke2fs(8) to create a file  system  without\ninitializing all of the block groups.  The kernel will keep a high watermark of unused\ninodes, and initialize inode tables and blocks lazily.  This  feature  speeds  up  the\ntime to check the file system using e2fsck(8), and it also speeds up the time required\nfor mke2fs(8) to create the file system.\n\n#### verity\n\nEnables support for verity protected files.  Verity files are readonly, and their data\nis  transparently verified against a Merkle tree hidden past the end of the file.  Us‐\ning the Merkle tree's root hash, a verity file can be efficiently authenticated, inde‐\npendent of the file's size.\n\nThis feature is most useful for authenticating important read-only files on read-write\nfile systems.  If the file system itself is read-only, then using dm-verity to authen‐\nticate the entire block device may provide much better security.\n\n### MOUNT OPTIONS\n\nThis  section  describes  mount  options  which  are specific to ext2, ext3, and ext4.  Other\ngeneric mount options may be used as well; see mount(8) for details.\n\n#### Mount options for ext2\n\nThe `ext2' file system is the standard Linux file system.  Since Linux 2.5.46, for most mount\noptions the default is determined by the file system superblock. Set them with tune2fs(8).\n\nacl|noacl\nSupport POSIX Access Control Lists (or not).  See the acl(5) manual page.\n\nbsddf|minixdf\nSet  the behavior for the statfs system call. The minixdf behavior is to return in the\nfblocks field the total number of blocks of the file system, while the bsddf behavior\n(which is the default) is to subtract the overhead blocks used by the ext2 file system\nand not available for file storage. Thus\n\n% mount /k -o minixdf; df /k; umount /k\n\nFile System  1024-blocks   Used  Available  Capacity  Mounted on\n/dev/sda6      2630655    86954   2412169      3%     /k\n\n% mount /k -o bsddf; df /k; umount /k\n\nFile System  1024-blocks  Used  Available  Capacity  Mounted on\n/dev/sda6      2543714      13   2412169      0%     /k\n\n(Note that this example shows that one can add command line  options  to  the  options\ngiven in /etc/fstab.)\n\ncheck=none or nocheck\nNo  checking  is done at mount time. This is the default. This is fast.  It is wise to\ninvoke e2fsck(8) every now and then, e.g. at boot time. The  non-default  behavior  is\nunsupported (check=normal and check=strict options have been removed). Note that these\nmount options don't have to be supported if ext4 kernel driver is used  for  ext2  and\next3 file systems.\n\ndebug  Print debugging info upon each (re)mount.\n\nerrors={continue|remount-ro|panic}\nDefine the behavior when an error is encountered.  (Either ignore errors and just mark\nthe file system erroneous and continue, or remount the file system read-only, or panic\nand  halt  the  system.)  The default is set in the file system superblock, and can be\nchanged using tune2fs(8).\n\ngrpid|bsdgroups and nogrpid|sysvgroups\nThese options define what group id a newly created file gets.  When grpid is  set,  it\ntakes the group id of the directory in which it is created; otherwise (the default) it\ntakes the fsgid of the current process, unless the directory has the setgid  bit  set,\nin which case it takes the gid from the parent directory, and also gets the setgid bit\nset if it is a directory itself.\n\ngrpquota|noquota|quota|usrquota\nThe usrquota (same as quota) mount option enables user quota support on the file  sys‐\ntem.  grpquota  enables group quotas support. You need the quota utilities to actually\nenable and manage the quota system.\n\n#### nouid32\n\nDisables 32-bit UIDs and GIDs.  This is for interoperability with older kernels  which\nonly store and expect 16-bit values.\n\noldalloc or orlov\nUse old allocator or Orlov allocator for new inodes. Orlov is default.\n\nresgid=n and resuid=n\nThe  ext2 file system reserves a certain percentage of the available space (by default\n5%, see mke2fs(8) and tune2fs(8)).  These options determine who can use  the  reserved\nblocks.  (Roughly: whoever has the specified uid, or belongs to the specified group.)\n\nsb=n   Instead  of using the normal superblock, use an alternative superblock specified by n.\nThis option is normally used when the primary superblock has been corrupted.  The  lo‐\ncation  of  backup superblocks is dependent on the file system's blocksize, the number\nof blocks per group, and features such as sparsesuper.\n\nAdditional backup superblocks can be determined by using the mke2fs program using  the\n-n  option to print out where the superblocks exist, supposing mke2fs is supplied with\narguments that are consistent with the file system's layout  (e.g.  blocksize,  blocks\nper group, sparsesuper, etc.).\n\nThe  block number here uses 1 k units. Thus, if you want to use logical block 32768 on\na file system with 4 k blocks, use \"sb=131072\".\n\nuserxattr|nouserxattr\nSupport \"user.\" extended attributes (or not).\n\n#### Mount options for ext3\n\nThe ext3 file system is a version of the ext2 file system which has been enhanced with  jour‐\nnaling.  It supports the same options as ext2 as well as the following additions:\n\njournaldev=devnum/journalpath=path\nWhen the external journal device's major/minor numbers have changed, these options al‐\nlow the user to specify the new journal location.  The journal  device  is  identified\neither through its new major/minor numbers encoded in devnum, or via a path to the de‐\nvice.\n\nnorecovery/noload\nDon't load the journal on mounting.  Note that if the file system  was  not  unmounted\ncleanly, skipping the journal replay will lead to the file system containing inconsis‐\ntencies that can lead to any number of problems.\n\ndata={journal|ordered|writeback}\nSpecifies the journaling mode for file data.  Metadata is always  journaled.   To  use\nmodes  other than ordered on the root file system, pass the mode to the kernel as boot\nparameter, e.g. rootflags=data=journal.\n\njournal\nAll data is committed into the journal prior to being  written  into  the  main\nfile system.\n\nordered\nThis  is  the  default  mode.  All data is forced directly out to the main file\nsystem prior to its metadata being committed to the journal.\n\nwriteback\nData ordering is not preserved – data may be written into the main file  system\nafter  its  metadata has been committed to the journal.  This is rumoured to be\nthe highest-throughput option.  It guarantees internal file  system  integrity,\nhowever  it can allow old data to appear in files after a crash and journal re‐\ncovery.\n\ndataerr=ignore\nJust print an error message if an error occurs in a file data buffer in ordered mode.\n\ndataerr=abort\nAbort the journal if an error occurs in a file data buffer in ordered mode.\n\nbarrier=0 / barrier=1\nThis disables / enables the use of write barriers in the  jbd  code.   barrier=0  dis‐\nables,  barrier=1  enables (default). This also requires an IO stack which can support\nbarriers, and if jbd gets an error on a barrier write, it will disable barriers  again\nwith  a  warning.   Write barriers enforce proper on-disk ordering of journal commits,\nmaking volatile disk write caches safe to use, at some performance penalty.   If  your\ndisks  are battery-backed in one way or another, disabling barriers may safely improve\nperformance.\n\ncommit=nrsec\nStart a journal commit every nrsec seconds.  The default value  is  5  seconds.   Zero\nmeans default.\n\nuserxattr\nEnable Extended User Attributes. See the attr(5) manual page.\n\njqfmt={vfsold|vfsv0|vfsv1}\nApart  from  the  old quota system (as in ext2, jqfmt=vfsold aka version 1 quota) ext3\nalso supports journaled quotas (version 2 quota). jqfmt=vfsv0 or  jqfmt=vfsv1  enables\njournaled quotas. Journaled quotas have the advantage that even after a crash no quota\ncheck is required. When the quota file system feature is enabled, journaled quotas are\nused automatically, and this mount option is ignored.\n\nusrjquota=aquota.user|grpjquota=aquota.group\nFor   journaled   quotas   (jqfmt=vfsv0   or  jqfmt=vfsv1),  the  mount  options  usr‐\njquota=aquota.user and grpjquota=aquota.group are required to tell  the  quota  system\nwhich  quota  database  files  to  use. When the quota file system feature is enabled,\njournaled quotas are used automatically, and this mount option is ignored.\n\n#### Mount options for ext4\n\nThe ext4 file system is an advanced level of the ext3 file system which  incorporates  scala‐\nbility and reliability enhancements for supporting large file system.\n\nThe  options  journaldev,  journalpath,  norecovery, noload, data, commit, orlov, oldalloc,\n[no]userxattr, [no]acl, bsddf, minixdf, debug, errors, dataerr, grpid, bsdgroups,  nogrpid,\nsysvgroups,  resgid,  resuid, sb, quota, noquota, nouid32, grpquota, usrquota, usrjquota, gr‐‐\n\n#### pjquota, and jqfmt are backwardly compatible with ext3 or ext2.\n\njournalchecksum | nojournalchecksum\nThe journalchecksum option enables checksumming of the  journal  transactions.   This\nwill allow the recovery code in e2fsck and the kernel to detect corruption in the ker‐\nnel. It is a compatible change and will be ignored by older kernels.\n\njournalasynccommit\nCommit block can be written to disk without waiting for descriptor blocks. If  enabled\nolder  kernels  cannot  mount  the device.  This will enable 'journalchecksum' inter‐\nnally.\n\nbarrier=0 / barrier=1 / barrier / nobarrier\nThese mount options have the same effect as in ext3.  The mount options \"barrier\"  and\n\"nobarrier\" are added for consistency with other ext4 mount options.\n\nThe ext4 file system enables write barriers by default.\n\ninodereadaheadblks=n\nThis  tuning  parameter  controls the maximum number of inode table blocks that ext4's\ninode table readahead algorithm will pre-read into the buffer cache.  The  value  must\nbe a power of 2. The default value is 32 blocks.\n\nstripe=n\nNumber  of  file  system  blocks  that mballoc will try to use for allocation size and\nalignment. For RAID5/6 systems this should be the number of data disks  *  RAID  chunk\nsize in file system blocks.\n\n#### delalloc\n\nDeferring block allocation until write-out time.\n\n#### nodelalloc\n\nDisable delayed allocation. Blocks are allocated when data is copied from user to page\ncache.\n\nmaxbatchtime=usec\nMaximum amount of time ext4 should wait for additional file system  operations  to  be\nbatch together with a synchronous write operation. Since a synchronous write operation\nis going to force a commit and then a wait for the I/O complete, it doesn't cost much,\nand  can  be  a  huge throughput win, we wait for a small amount of time to see if any\nother transactions can piggyback on the synchronous write. The algorithm used  is  de‐\nsigned  to  automatically  tune  for the speed of the disk, by measuring the amount of\ntime (on average) that it takes to finish committing a transaction. Call this time the\n\"commit  time\".   If  the  time that the transaction has been running is less than the\ncommit time, ext4 will try sleeping for the commit time to  see  if  other  operations\nwill  join the transaction. The commit time is capped by the maxbatchtime, which de‐\nfaults to 15000 µs (15 ms). This optimization can be turned off  entirely  by  setting\nmaxbatchtime to 0.\n\nminbatchtime=usec\nThis   parameter   sets   the  commit  time  (as  described  above)  to  be  at  least\nminbatchtime. It defaults to zero microseconds. Increasing this  parameter  may  im‐\nprove  the  throughput of multi-threaded, synchronous workloads on very fast disks, at\nthe cost of increasing latency.\n\njournalioprio=prio\nThe I/O priority (from 0 to 7, where 0 is the highest priority) which should  be  used\nfor  I/O  operations submitted by kjournald2 during a commit operation.  This defaults\nto 3, which is a slightly higher priority than the default I/O priority.\n\nabort  Simulate the effects of calling ext4abort() for debugging purposes.  This is normally\nused while remounting a file system which is already mounted.\n\nautodaalloc|noautodaalloc\nMany  broken applications don't use fsync() when replacing existing files via patterns\nsuch as\n\nfd = open(\"foo.new\")/write(fd,...)/close(fd)/ rename(\"foo.new\", \"foo\")\n\nor worse yet\n\nfd = open(\"foo\", OTRUNC)/write(fd,...)/close(fd).\n\nIf autodaalloc is enabled, ext4 will detect the replace-via-rename and  replace-via-\ntruncate patterns and force that any delayed allocation blocks are allocated such that\nat the next journal commit, in the default data=ordered mode, the data blocks  of  the\nnew file are forced to disk before the rename() operation is committed.  This provides\nroughly the same level of guarantees as ext3, and  avoids  the  \"zero-length\"  problem\nthat  can happen when a system crashes before the delayed allocation blocks are forced\nto disk.\n\nnoinititable\nDo not initialize any uninitialized inode table blocks in the background. This feature\nmay  be  used by installation CD's so that the install process can complete as quickly\nas possible; the inode table initialization process would then be deferred  until  the\nnext time the file system is mounted.\n\ninititable=n\nThe lazy itable init code will wait n times the number of milliseconds it took to zero\nout the previous block group's inode table. This minimizes the impact on  system  per‐\nformance while the file system's inode table is being initialized.\n\ndiscard/nodiscard\nControls  whether  ext4 should issue discard/TRIM commands to the underlying block de‐\nvice when blocks are freed.  This is useful for SSD devices  and  sparse/thinly-provi‐\nsioned LUNs, but it is off by default until sufficient testing has been done.\n\nblockvalidity/noblockvalidity\nThis  option enables/disables the in-kernel facility for tracking file system metadata\nblocks within internal data structures. This allows multi-block  allocator  and  other\nroutines  to  quickly  locate  extents  which  might overlap with file system metadata\nblocks. This option is intended for debugging purposes and since it negatively affects\nthe performance, it is off by default.\n\ndioreadlock/dioreadnolock\nControls  whether  or  not ext4 should use the DIO read locking. If the dioreadnolock\noption is specified ext4 will allocate uninitialized extent before  buffer  write  and\nconvert  the extent to initialized after IO completes.  This approach allows ext4 code\nto avoid using inode mutex, which improves scalability on high speed storages. However\nthis does not work with data journaling and dioreadnolock option will be ignored with\nkernel warning.  Note that dioreadnolock code path  is  only  used  for  extent-based\nfiles.   Because of the restrictions this options comprises it is off by default (e.g.\ndioreadlock).\n\nmaxdirsizekb=n\nThis limits the size of the directories so that any attempt to expand them beyond  the\nspecified limit in kilobytes will cause an ENOSPC error. This is useful in memory-con‐\nstrained environments, where a very large directory can cause severe performance prob‐\nlems  or  even provoke the Out Of Memory killer. (For example, if there is only 512 MB\nmemory available, a 176 MB directory may seriously cramp the system's style.)\n\niversion\nEnable 64-bit inode version support. This option is off by default.\n\n#### nombcache\n\nThis option disables use of mbcache for extended attribute deduplication.  On  systems\nwhere extended attributes are rarely or never shared between files, use of mbcache for\ndeduplication adds unnecessary computational overhead.\n\n#### prjquota\n\nThe prjquota mount option enables project quota support on the file system.  You  need\nthe quota utilities to actually enable and manage the quota system.  This mount option\nrequires the project file system feature.\n\n### FILE ATTRIBUTES\n\nThe ext2, ext3, and ext4 file systems support setting the following file attributes on  Linux\nsystems using the chattr(1) utility:\n\na - append only\n\nA - no atime updates\n\nd - no dump\n\nD - synchronous directory updates\n\ni - immutable\n\nS - synchronous updates\n\nu - undeletable\n\nIn addition, the ext3 and ext4 file systems support the following flag:\n\nj - data journaling\n\nFinally, the ext4 file system also supports the following flag:\n\ne - extents format\n\nFor descriptions of these attribute flags, please refer to the chattr(1) man page.\n\n### KERNEL SUPPORT\n\nThis  section  lists the file system driver (e.g., ext2, ext3, ext4) and upstream kernel ver‐\nsion where a particular file system feature was supported.  Note that in some cases the  fea‐\nture  was  present  in earlier kernel versions, but there were known, serious bugs.  In other\ncases the feature may still be considered in an experimental state.  Finally, note that  some\ndistributions  may have backported features into older kernels; in particular the kernel ver‐\nsions in certain \"enterprise distributions\" can be extremely misleading.\n\nfiletype            ext2, 2.2.0\n\nsparsesuper        ext2, 2.2.0\n\nlargefile          ext2, 2.2.0\n\nhasjournal         ext3, 2.4.15\n\nextattr            ext2/ext3, 2.6.0\n\ndirindex           ext3, 2.6.0\n\nresizeinode        ext3, 2.6.10 (online resizing)\n\n64bit               ext4, 2.6.28\n\ndirnlink           ext4, 2.6.28\n\nextent              ext4, 2.6.28\n\nextraisize         ext4, 2.6.28\n\nflexbg             ext4, 2.6.28\n\nhugefile           ext4, 2.6.28\n\nmetabg             ext4, 2.6.28\n\nuninitbg           ext4, 2.6.28\n\nmmp                 ext4, 3.0\n\nbigalloc            ext4, 3.2\n\nquota               ext4, 3.6\n\ninlinedata         ext4, 3.8\n\nsparsesuper2       ext4, 3.16\n\nmetadatacsum       ext4, 3.18\n\nencrypt             ext4, 4.1\n\nmetadatacsumseed  ext4, 4.4\n\nproject             ext4, 4.5\n\neainode            ext4, 4.13\n\nlargedir           ext4, 4.13\n\ncasefold            ext4, 5.2\n\nverity              ext4, 5.4\n\nstableinodes       ext4, 5.5\n\n### SEE ALSO\n\nmke2fs(8),  mke2fs.conf(5),  e2fsck(8),  dumpe2fs(8),   tune2fs(8),   debugfs(8),   mount(8),\nchattr(1)\n\n\n\nE2fsprogs version 1.46.5                    December 2021                                    EXT4(5)\n\n"
        }
    ],
    "structuredContent": {
        "command": "ext2",
        "section": "5",
        "mode": "man",
        "summary": "ext2 - the second extended file system ext3 - the third extended file system ext4 - the fourth extended file system",
        "synopsis": null,
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [
            {
                "name": "mke2fs",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/mke2fs/8/json"
            },
            {
                "name": "mke2fs.conf",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/mke2fs.conf/5/json"
            },
            {
                "name": "e2fsck",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/e2fsck/8/json"
            },
            {
                "name": "dumpe2fs",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/dumpe2fs/8/json"
            },
            {
                "name": "tune2fs",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/tune2fs/8/json"
            },
            {
                "name": "debugfs",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/debugfs/8/json"
            },
            {
                "name": "mount",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/mount/8/json"
            },
            {
                "name": "chattr",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/chattr/1/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 4,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 8,
                "subsections": []
            },
            {
                "name": "FILE SYSTEM FEATURES",
                "lines": 6,
                "subsections": [
                    {
                        "name": "64bit",
                        "lines": 6
                    },
                    {
                        "name": "bigalloc",
                        "lines": 14
                    },
                    {
                        "name": "casefold",
                        "lines": 24
                    },
                    {
                        "name": "encrypt",
                        "lines": 11
                    },
                    {
                        "name": "extent",
                        "lines": 17
                    },
                    {
                        "name": "filetype",
                        "lines": 62
                    },
                    {
                        "name": "mmp",
                        "lines": 3
                    },
                    {
                        "name": "project",
                        "lines": 3
                    },
                    {
                        "name": "quota",
                        "lines": 45
                    },
                    {
                        "name": "verity",
                        "lines": 9
                    }
                ]
            },
            {
                "name": "MOUNT OPTIONS",
                "lines": 3,
                "subsections": [
                    {
                        "name": "Mount options for ext2",
                        "lines": 52
                    },
                    {
                        "name": "nouid32",
                        "lines": 29
                    },
                    {
                        "name": "Mount options for ext3",
                        "lines": 70
                    },
                    {
                        "name": "Mount options for ext4",
                        "lines": 6
                    },
                    {
                        "name": "pjquota, and jqfmt are backwardly compatible with ext3 or ext2.",
                        "lines": 26
                    },
                    {
                        "name": "delalloc",
                        "lines": 2
                    },
                    {
                        "name": "nodelalloc",
                        "lines": 92
                    },
                    {
                        "name": "nombcache",
                        "lines": 4
                    },
                    {
                        "name": "prjquota",
                        "lines": 5
                    }
                ]
            },
            {
                "name": "FILE ATTRIBUTES",
                "lines": 27,
                "subsections": []
            },
            {
                "name": "KERNEL SUPPORT",
                "lines": 65,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 6,
                "subsections": []
            }
        ]
    }
}