Whamcloud - gitweb
Merge branch 'maint' into next
[tools/e2fsprogs.git] / misc / mke2fs.8.in
index 51e07ed..30f97bb 100644 (file)
@@ -1,15 +1,15 @@
 .\" -*- nroff -*-
 .\" Copyright 1993, 1994, 1995 by Theodore Ts'o.  All Rights Reserved.
 .\" This file may be copied under the terms of the GNU Public License.
-.\" 
+.\"
 .TH MKE2FS 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
 .SH NAME
-mke2fs \- create an ext2/ext3 filesystem
+mke2fs \- create an ext2/ext3/ext4 file system
 .SH SYNOPSIS
 .B mke2fs
 [
 .B \-c
-| 
+|
 .B \-l
 .I filename
 ]
@@ -18,18 +18,33 @@ mke2fs \- create an ext2/ext3 filesystem
 .I block-size
 ]
 [
-.B \-f
-.I fragment-size
+.B \-C
+.I cluster-size
+]
+[
+.B \-d
+.I root-directory
+]
+[
+.B \-D
 ]
 [
 .B \-g
 .I blocks-per-group
 ]
 [
+.B \-G
+.I number-of-groups
+]
+[
 .B \-i
 .I bytes-per-inode
 ]
 [
+.B \-I
+.I inode-size
+]
+[
 .B \-j
 ]
 [
@@ -41,7 +56,7 @@ mke2fs \- create an ext2/ext3 filesystem
 .I number-of-inodes
 ]
 [
-.B -n
+.B \-n
 ]
 [
 .B \-m
@@ -52,8 +67,8 @@ mke2fs \- create an ext2/ext3 filesystem
 .I creator-os
 ]
 [
-.B \-O 
-.IR feature [,...]
+.B \-O
+[^]\fIfeature\fR[,...]
 ]
 [
 .B \-q
@@ -84,15 +99,31 @@ mke2fs \- create an ext2/ext3 filesystem
 .B \-S
 ]
 [
+.B \-t
+.I fs-type
+]
+[
 .B \-T
-.I filesystem-type
+.I usage-type
+]
+[
+.B \-U
+.I UUID
 ]
 [
 .B \-V
 ]
+[
+.B \-e
+.I errors-behavior
+]
+[
+.B \-z
+.I undo_file
+]
 .I device
 [
-.I blocks-count
+.I fs-size
 ]
 @JDEV@.sp
 @JDEV@.B "mke2fs \-O journal_dev"
@@ -120,111 +151,372 @@ mke2fs \- create an ext2/ext3 filesystem
 @JDEV@]
 @JDEV@.I external-journal
 @JDEV@[
-@JDEV@.I blocks-count
+@JDEV@.I fs-size
 @JDEV@]
 .SH DESCRIPTION
 .B mke2fs
-is used to create an ext2/ext3 filesystem (usually in a disk partition).
-.I device
-is the special file corresponding to the device (e.g 
-.IR /dev/hdXX ).
-.I blocks-count
-is the number of blocks on the device.  If omitted,
+is used to create an ext2, ext3, or ext4 file system, usually in a disk
+partition (or file) named by
+.IR device .
+.PP
+The file system size is specified by
+.IR fs-size .
+If
+.I fs-size
+does not have a suffix, it is interpreted as power-of-two kilobytes,
+unless the
+.B \-b
+.I blocksize
+option is specified, in which case
+.I fs-size
+is interpreted as the number of
+.I blocksize
+blocks.   If the fs-size is suffixed by 'k', 'm', 'g', 't'
+(either upper-case or lower-case), then it is interpreted in
+power-of-two kilobytes, megabytes, gigabytes, terabytes, etc.
+If
+.I fs-size
+is omitted,
+.B mke2fs
+will create the file system based on the device size.
+.PP
+If
 .B mke2fs
-automagically figures the file system size.  If called as
+is run as
+.B mkfs.XXX
+(i.e.,
+.BR mkfs.ext2 ,
+.BR mkfs.ext3 ,
+or
+.BR mkfs.ext4 )
+the option
+.B \-t
+.I XXX
+is implied; so
 .B mkfs.ext3
-a journal is created as if the
-.B \-j
-option was specified.
+will create a file system for use with ext3,
+.B mkfs.ext4
+will create a file system for use with ext4, and so on.
+.PP
+The defaults of the parameters for the newly created file system, if not
+overridden by the options listed below, are controlled by the
+.B /etc/mke2fs.conf
+configuration file.  See the
+.BR mke2fs.conf (5)
+manual page for more details.
 .SH OPTIONS
 .TP
 .BI \-b " block-size"
-Specify the size of blocks in bytes.  Valid block size vales are 1024, 
-2048 and 4096 bytes per block.  If omitted,
-.B mke2fs
-block-size is heuristically determined by the file system size and
-the expected usage of the filesystem (see the
+Specify the size of blocks in bytes.  Valid block-size values are powers of two
+from 1024 up to 65536 (however note that the kernel is able to mount only
+file systems with block-size smaller or equal to the system page size - 4k on
+x86 systems, up to 64k on ppc64 or aarch64 depending on kernel configuration).
+If omitted, block-size is heuristically determined by the file system size and
+the expected usage of the file system (see the
 .B \-T
-option).  I
+option).  In most common cases, the default block size is 4k. If
 .I block-size
-is negative, then 
+is preceded by a negative sign ('-'), then
 .B mke2fs
 will use heuristics to determine the
 appropriate block size, with the constraint that the block size will be
-at least 
+at least
 .I block-size
 bytes.  This is useful for certain hardware devices which require that
 the blocksize be a multiple of 2k.
 .TP
 .B \-c
 Check the device for bad blocks before creating the file system.  If
-this option is specified twice, then a slower, read-write
+this option is specified twice, then a slower read-write
 test is used instead of a fast read-only test.
 .TP
+.B \-C " cluster-size"
+Specify the size of cluster in bytes for file systems using the bigalloc
+feature.  Valid cluster-size values are from 2048 to 256M bytes per
+cluster.  This can only be specified if the bigalloc feature is
+enabled.  (See the
+.B ext4 (5)
+man page for more details about bigalloc.)   The default cluster size if
+bigalloc is enabled is 16 times the block size.
+.TP
+.BI \-d " root-directory"
+Copy the contents of the given directory into the root directory of the
+file system.
+.TP
+.B \-D
+Use direct I/O when writing to the disk.  This avoids mke2fs dirtying a
+lot of buffer cache memory, which may impact other applications running
+on a busy server.  This option will cause mke2fs to run much more
+slowly, however, so there is a tradeoff to using direct I/O.
+.TP
+.BI \-e " error-behavior"
+Change the behavior of the kernel code when errors are detected.
+In all cases, a file system error will cause
+.BR e2fsck (8)
+to check the file system on the next boot.
+.I error-behavior
+can be one of the following:
+.RS 1.2i
+.TP 1.2i
+.B continue
+Continue normal execution.
+.TP
+.B remount-ro
+Remount file system read-only.
+.TP
+.B panic
+Cause a kernel panic.
+.RE
+.TP
 .BI \-E " extended-options"
-Set extended options for the filesystem.  Extended options are comma
+Set extended options for the file system.  Extended options are comma
 separated, and may take an argument using the equals ('=') sign.  The
-.B -E
-option used to be 
-.B -R
-in earlier versions of 
+.B \-E
+option used to be
+.B \-R
+in earlier versions of
 .BR mke2fs .
-The 
-.B -R
-option is still accepted for backwards compatibility.   The 
-following extended options are supported:
+The
+.B \-R
+option is still accepted for backwards compatibility, but is deprecated.
+The following extended options are supported:
 .RS 1.2i
 .TP
-.BI stride= stripe-size
-Configure the filesystem for a RAID array with
-.I stripe-size
-filesystem blocks per stripe.
+.BI encoding= encoding-name
+Enable the
+.I casefold
+feature in the super block and set
+.I encoding-name
+as the encoding to be used.  If
+.I encoding-name
+is not specified, the encoding defined in
+.BR mke2fs.conf (5)
+is used.
+.TP
+.BI encoding_flags= encoding-flags
+Define parameters for file name character encoding operations.  If a
+flag is not changed using this parameter, its default value is used.
+.I encoding-flags
+should be a comma-separated lists of flags to be enabled.  To disable a
+flag, add it to the list with the prefix "no".
+
+The only flag that can be set right now is
+.I strict
+which means that invalid strings should be rejected by the file system.
+In the default configuration, the
+.I strict
+flag is disabled.
+.TP
+.BI mmp_update_interval= interval
+Adjust the initial MMP update interval to
+.I interval
+seconds.  Specifying an
+.I interval
+of 0 means to use the default interval.  The specified interval must
+be less than 300 seconds.  Requires that the
+.B mmp
+feature be enabled.
+.TP
+.BI stride= stride-size
+Configure the file system for a RAID array with
+.I stride-size
+file system blocks. This is the number of blocks read or written to disk
+before moving to the next disk, which is sometimes referred to as the
+.I chunk size.
+This mostly affects placement of file system metadata like bitmaps at
+.B mke2fs
+time to avoid placing them on a single disk, which can hurt performance.
+It may also be used by the block allocator.
+.TP
+.BI stripe_width= stripe-width
+Configure the file system for a RAID array with
+.I stripe-width
+file system blocks per stripe. This is typically stride-size * N, where
+N is the number of data-bearing disks in the RAID (e.g. for RAID 5 there is one
+parity disk, so N will be the number of disks in the array minus 1).
+This allows the block allocator to prevent read-modify-write of the
+parity in a RAID stripe if possible when the data is written.
+.TP
+.BI offset= offset
+Create the file system at an offset from the beginning of the device or
+file.  This can be useful when creating disk images for virtual machines.
 .TP
 .BI resize= max-online-resize
 Reserve enough space so that the block group descriptor table can grow
-to support a filesystem that has max-online-resize blocks.
-.RE
+to support a file system that has
+.I max-online-resize
+blocks.
+.TP
+.B lazy_itable_init\fR[\fB= \fI<0 to disable, 1 to enable>\fR]
+If enabled and the uninit_bg feature is enabled, the inode table will
+not be fully initialized by
+.BR mke2fs .
+This speeds up file system
+initialization noticeably, but it requires the kernel to finish
+initializing the file system in the background when the file system is
+first mounted.  If the option value is omitted, it defaults to 1 to
+enable lazy inode table zeroing.
+.TP
+.B lazy_journal_init\fR[\fB= \fI<0 to disable, 1 to enable>\fR]
+If enabled, the journal inode will not be fully zeroed out by
+.BR mke2fs .
+This speeds up file system initialization noticeably, but carries some
+small risk if the system crashes before the journal has been overwritten
+entirely one time.  If the option value is omitted, it defaults to 1 to
+enable lazy journal inode zeroing.
+.TP
+.B assume_storage_prezeroed\fR[\fB= \fI<0 to disable, 1 to enable>\fR]
+If enabled,
+.BR mke2fs
+assumes that the storage device has been prezeroed, skips zeroing the journal
+and inode tables, and annotates the block group flags to signal that the inode
+table has been zeroed.
+.TP
+.B no_copy_xattrs
+Normally
+.B mke2fs
+will copy the extended attributes of the files in the directory
+hierarchy specified via the (optional)
+.B \-d
+option.  This will disable the copy and leaves the files in the newly
+created file system without any extended attributes.
+.TP
+.BI num_backup_sb= <0|1|2>
+If the
+.B sparse_super2
+file system feature is enabled this option controls whether there will
+be 0, 1, or 2 backup superblocks created in the file system.
+.TP
+.B packed_meta_blocks\fR[\fB= \fI<0 to disable, 1 to enable>\fR]
+Place the allocation bitmaps and the inode table at the beginning of the
+disk.  This option requires that the flex_bg file system feature to be
+enabled in order for it to have effect, and will also create the journal
+at the beginning of the file system.  This option is useful for flash
+devices that use SLC flash at the beginning of the disk.
+It also maximizes the range of contiguous data blocks, which
+can be useful for certain specialized use cases, such as supported
+Shingled Drives.
+.TP
+.BI root_owner [=uid:gid]
+Specify the numeric user and group ID of the root directory.  If no UID:GID
+is specified, use the user and group ID of the user running \fBmke2fs\fR.
+In \fBmke2fs\fR 1.42 and earlier the UID and GID of the root directory were
+set by default to the UID and GID of the user running the mke2fs command.
+The \fBroot_owner=\fR option allows explicitly specifying these values,
+and avoid side-effects for users that do not expect the contents of the
+file system to change based on the user running \fBmke2fs\fR.
 .TP
-.BI \-f " fragment-size"
-Specify the size of fragments in bytes.
+.B test_fs
+Set a flag in the file system superblock indicating that it may be
+mounted using experimental kernel code, such as the ext4dev file system.
+.TP
+.BI orphan_file_size= size
+Set size of the file for tracking unlinked but still open inodes and inodes
+with truncate in progress. Larger file allows for better scalability, reserving
+a few blocks per cpu is ideal.
+.TP
+.B discard
+Attempt to discard blocks at mkfs time (discarding blocks initially is useful
+on solid state devices and sparse / thin-provisioned storage). When the device
+advertises that discard also zeroes data (any subsequent read after the discard
+and before write returns zero), then mark all not-yet-zeroed inode tables as
+zeroed. This significantly speeds up file system initialization. This is set
+as default.
+.TP
+.B nodiscard
+Do not attempt to discard blocks at mkfs time.
+.TP
+.B quotatype
+Specify the which  quota types (usrquota, grpquota, prjquota) which
+should be enabled in the created file system.  The argument of this
+extended option should be a colon separated list.  This option has
+effect only if the
+.B quota
+feature is set.   The default quota types to be initialized if this
+option is not specified is both user and group quotas.  If the project
+feature is enabled that project quotas will be initialized as well.
+.RE
 .TP
 .B \-F
-Force 
+Force
+.B mke2fs
+to create a file system, even if the specified device is not a partition
+on a block special device, or if other parameters do not make sense.
+In order to force
 .B mke2fs
-to run, even if the specified device is not a 
-block special device, or appears to be mounted.
+to create a file system even if the file system appears to be in use
+or is mounted (a truly dangerous thing to do), this option must be
+specified twice.
 .TP
 .BI \-g " blocks-per-group"
 Specify the number of blocks in a block group.  There is generally no
-reason the user to ever set this parameter, as the default is optimal
-for the filesystem.  (For administrators who are creating
-filesystems on RAID arrays, it is preferable to use the
+reason for the user to ever set this parameter, as the default is optimal
+for the file system.  (For administrators who are creating
+file systems on RAID arrays, it is preferable to use the
 .I stride
 RAID parameter as part of the
-.B \-R
-option rather than manipulating the number of blocks per group.)  
+.B \-E
+option rather than manipulating the number of blocks per group.)
 This option is generally used by developers who
-are developing test cases.  
+are developing test cases.
+.IP
+If the bigalloc feature is enabled, the
+.B \-g
+option will specify the number of clusters in a block group.
+.TP
+.BI \-G " number-of-groups"
+Specify the number of block groups that will be packed together to
+create a larger virtual block group (or "flex_bg group") in an
+ext4 file system.  This improves meta-data locality and performance
+on meta-data heavy workloads.  The number of groups must be a power
+of 2 and may only be specified if the
+.B flex_bg
+file system feature is enabled.
 .TP
 .BI \-i " bytes-per-inode"
-Specify the bytes/inode ratio. 
+Specify the bytes/inode ratio.
 .B mke2fs
 creates an inode for every
 .I bytes-per-inode
-bytes of space on the disk.  The larger the 
+bytes of space on the disk.  The larger the
 .I bytes-per-inode
 ratio, the fewer inodes will be created.  This value generally shouldn't
-be smaller than the blocksize of the filesystem, since then too many
-inodes will be made.  Be warned that is not possible to expand the number 
-of inodes on a filesystem after it is created, so be careful deciding the
-correct value for this parameter. 
-.TP 
+be smaller than the blocksize of the file system, since in that case more
+inodes would be made than can ever be used.  Be warned that it is not
+possible to change this ratio on a file system after it is created, so be
+careful deciding the correct value for this parameter.  Note that resizing
+a file system changes the number of inodes to maintain this ratio.
+.TP
+.BI \-I " inode-size"
+Specify the size of each inode in bytes.
+The
+.I inode-size
+value must be a power of 2 larger or equal to 128.  The larger the
+.I inode-size
+the more space the inode table will consume, and this reduces the usable
+space in the file system and can also negatively impact performance.
+It is not
+possible to change this value after the file system is created.
+.IP
+File systems with an inode size of 128 bytes do not support timestamps
+beyond January 19, 2038.  Inodes which are 256 bytes or larger will
+support extended timestamps, project id's, and the ability to store some
+extended attributes in the inode table for improved performance.
+.IP
+The default inode size is controlled by the
+.BR mke2fs.conf (5)
+file.  In the
+.B mke2fs.conf
+file shipped with e2fsprogs, the default inode size is 256 bytes for
+most file systems, except for small file systems where the inode size
+will be 128 bytes.
+.TP
 .B \-j
-Create the filesystem with an ext3 journal.  If the
+Create the file system with an ext3 journal.  If the
 .B \-J
 option is not specified, the default journal parameters will be used to
-create an appropriately sized journal (given the size of the filesystem) 
-stored within the filesystem.  Note that you must be using a kernel
+create an appropriately sized journal (given the size of the file system)
+stored within the file system.  Note that you must be using a kernel
 which has ext3 support in order to actually make use of the journal.
 .TP
 .BI \-J " journal-options"
@@ -235,15 +527,44 @@ The following journal options are supported:
 .RS 1.2i
 .TP
 .BI size= journal-size
-Create an internal journal (i.e., stored inside the filesystem) of size
-.I journal-size 
+Create an internal journal (i.e., stored inside the file system) of size
+.I journal-size
 megabytes.
-The size of the journal must be at least 1024 filesystem blocks 
-(i.e., 1MB if using 1k blocks, 4MB if using 4k blocks, etc.) 
-and may be no more than 102,400 filesystem blocks.  
+The size of the journal must be at least 1024 file system blocks
+(i.e., 1MB if using 1k blocks, 4MB if using 4k blocks, etc.)
+and may be no more than 10,240,000 file system blocks or half the total
+file system size (whichever is smaller)
+.TP
+.BI fast_commit_size= fast-commit-size
+Create an additional fast commit journal area of size
+.I fast-commit-size
+kilobytes.
+This option is only valid if
+.B fast_commit
+feature is enabled
+on the file system. If this option is not specified and if
+.B fast_commit
+feature is turned on, fast commit area size defaults to
+.I journal-size
+/ 64 megabytes. The total size of the journal with
+.B fast_commit
+feature set is
+.I journal-size
++ (
+.I fast-commit-size
+* 1024) megabytes. The total journal size may be no more than
+10,240,000 file system blocks or half the total file system size
+(whichever is smaller).
+.TP
+.BI location =journal-location
+Specify the location of the journal.  The argument
+.I journal-location
+can either be specified as a block number, or if the number has a units
+suffix (e.g., 'M', 'G', etc.) interpret it as the offset from the
+beginning of the file system.
 @JDEV@.TP
 @JDEV@.BI device= external-journal
-@JDEV@Attach the filesystem to the journal block device located on
+@JDEV@Attach the file system to the journal block device located on
 @JDEV@.IR external-journal .
 @JDEV@The external
 @JDEV@journal must already have been created using the command
@@ -254,7 +575,12 @@ and may be no more than 102,400 filesystem blocks.
 @JDEV@Note that
 @JDEV@.I external-journal
 @JDEV@must have been created with the
-@JDEV@same block size as the new filesystem.
+@JDEV@same block size as the new file system.
+@JDEV@In addition, while there is support for attaching
+@JDEV@multiple file systems to a single external journal,
+@JDEV@the Linux kernel and
+@JDEV@.BR e2fsck (8)
+@JDEV@do not currently support shared external journals yet.
 @JDEV@.IP
 @JDEV@Instead of specifying a device name directly,
 @JDEV@.I external-journal
@@ -273,182 +599,293 @@ and may be no more than 102,400 filesystem blocks.
 @JDEV@.IP
 @JDEV@Only one of the
 @JDEV@.BR size " or " device
-@JDEV@options can be given for a filesystem.
+@JDEV@options can be given for a file system.
 .TP
 .BI \-l " filename"
 Read the bad blocks list from
-.IR filename .  
+.IR filename .
 Note that the block numbers in the bad block list must be generated
-using the same block size as used by mke2fs.  As a result, the
+using the same block size as used by
+.BR mke2fs .
+As a result, the
 .B \-c
-option to 
+option to
 .B mke2fs
 is a much simpler and less error-prone method of checking a disk for bad
-blocks before formatting it, as 
+blocks before formatting it, as
 .B mke2fs
 will automatically pass the correct parameters to the
 .B badblocks
 program.
 .TP
 .BI \-L " new-volume-label"
-Set the volume label for the filesystem to
+Set the volume label for the file system to
 .IR new-volume-label .
 The maximum length of the
 volume label is 16 bytes.
 .TP
 .BI \-m " reserved-blocks-percentage"
-Specify the percentage of the filesystem blocks reserved for 
+Specify the percentage of the file system blocks reserved for
 the super-user.  This avoids fragmentation, and allows root-owned
-daemons, such as 
+daemons, such as
 .BR syslogd (8),
-to continue to function correctly after non-privileged processes are 
-prevented from writing to the filesystem.  The default percentage 
+to continue to function correctly after non-privileged processes are
+prevented from writing to the file system.  The default percentage
 is 5%.
 .TP
-.B \-M
-Set the last mounted directory for the filesystem.  This might be useful 
-for the sake of utilities that key off of the last mounted directory to 
-determine where the filesystem should be mounted.
+.BI \-M " last-mounted-directory"
+Set the last mounted directory for the file system.  This might be useful
+for the sake of utilities that key off of the last mounted directory to
+determine where the file system should be mounted.
 .TP
 .B \-n
-causes mke2fs to not actually create a filesystem, but display what it
-would do if it were to create a filesystem.  This can be used to
+Causes
+.B mke2fs
+to not actually create a file system, but display what it
+would do if it were to create a file system.  This can be used to
 determine the location of the backup superblocks for a particular
-filesystem, so long as the mke2fs parameters that were passed when the
-filesystem was originally created are used again.  (With the
-.B \-n 
+file system, so long as the
+.B mke2fs
+parameters that were passed when the
+file system was originally created are used again.  (With the
+.B \-n
 option added, of course!)
 .TP
 .BI \-N " number-of-inodes"
-overrides the default calculation of the number of inodes that should be 
-reserved for the filesystem (which is based on the number of blocks and 
-the 
+Overrides the default calculation of the number of inodes that should be
+reserved for the file system (which is based on the number of blocks and
+the
 .I bytes-per-inode
-ratio).  This allows the user to specify the number 
+ratio).  This allows the user to specify the number
 of desired inodes directly.
 .TP
 .BI \-o " creator-os"
-Manually override the default value of the "creator os" field of the 
-filesystem.  Normally the creator field is set by default to the native OS
-of the
-.B mke2fs
-executable.
-.TP
-.B "\-O \fIfeature\fR[,...]"
-Create filesystem with given features (filesystem options), overriding 
-the default filesystem options.
-Currently, the
-.B sparse_super
-and
-.B filetype
-features are turned on by default when 
+Overrides the default value of the "creator operating system" field of the
+file system.  The creator field is set by default to the name of the OS the
 .B mke2fs
-is run on a system with Linux 2.2 or later (unless creator-os is set to
-the Hurd).  Filesystems that may need to be mounted on pre-2.2 Linux or
-other kernels should be created with
-.B "\-O none"
-(or
-.B "\-r 0"
-for Linux 1.2) which will disable these features, even if 
-.B mke2fs 
-is run on a system which can support them.
-.sp
-The following filesystem options are supported:
-.RS 1.2i
-.TP
-.B dir_index
-Use hashed b-trees to speed up lookups in large directories.
+executable was compiled for.
 .TP
-.B filetype
-Store file type information in directory entries.
-.TP
-.B has_journal
-Create an ext3 journal (as if using the
-.B \-j
-option).
-@JDEV@.TP
-@JDEV@.B journal_dev
-@JDEV@Create an external ext3 journal on the given device
-@JDEV@instead of a regular ext2 filesystem.
-@JDEV@Note that
-@JDEV@.I external-journal
-@JDEV@must be created with the same
-@JDEV@block size as the filesystems that will be using it.
+.B "\-O \fR[^]\fIfeature\fR[,...]"
+Create a file system with the given features (file system options),
+overriding the default file system options.  The features that are
+enabled by default are specified by the
+.I base_features
+relation, either in the
+.I [defaults]
+section in the
+.B /etc/mke2fs.conf
+configuration file,
+or in the
+.I [fs_types]
+subsections for the usage types as specified by the
+.B \-T
+option, further modified by the
+.I features
+relation found in the
+.I [fs_types]
+subsections for the file system and usage types.  See the
+.BR mke2fs.conf (5)
+manual page for more details.
+The file system type-specific configuration setting found in the
+.I [fs_types]
+section will override the global default found in
+.IR [defaults] .
+.sp
+The file system feature set will be further edited
+using either the feature set specified by this option,
+or if this option is not given, by the
+.I default_features
+relation for the file system type being created, or in the
+.I [defaults]
+section of the configuration file.
+.sp
+The file system feature set is comprised of a list of features, separated
+by commas, that are to be enabled.  To disable a feature, simply
+prefix the feature name with a caret ('^') character.
+Features with dependencies will not be removed successfully.
+The pseudo-file system feature "none" will clear all file system features.
 .TP
-.B sparse_super
-Create a filesystem with fewer superblock backup copies
-(saves space on large filesystems).
-.RE
+For more information about the features which can be set, please see
+the manual page
+.BR ext4 (5).
 .TP
 .B \-q
-Quiet execution.  Useful if 
+Quiet execution.  Useful if
 .B mke2fs
 is run in a script.
 .TP
 .BI \-r " revision"
-Set the filesystem revision for the new filesystem.  Note that 1.2
-kernels only support revision 0 filesystems.  The default is to 
-create revision 1 filesystems.
+Set the file system revision for the new file system.  Note that 1.2
+kernels only support revision 0 file systems.  The default is to
+create revision 1 file systems.
 .TP
 .B \-S
-Write superblock and group descriptors only.  This is useful if all of
+Write superblock and group descriptors only.  This is an extreme
+measure to be taken only in the very unlikely case that all of
 the superblock and backup superblocks are corrupted, and a last-ditch
-recovery method is desired.  It causes 
+recovery method is desired by experienced users.  It causes
 .B mke2fs
-to reinitialize the 
-superblock and group descriptors, while not touching the inode table
-and the block and inode bitmaps.  The
+to reinitialize the superblock and group descriptors, while not
+touching the inode table and the block and inode bitmaps.  The
 .B e2fsck
 program should be run immediately after this option is used, and there
-is no guarantee that any data will be salvageable.  It is critical to
-specify the correct filesystem blocksize when using this option,
-or there is no chance of recovery.
+is no guarantee that any data will be salvageable.  Due to the wide
+variety of possible options to
+.B mke2fs
+that affect the on-disk layout, it is critical to specify exactly
+the same format options, such as blocksize, fs-type, feature flags, and
+other tunables when using this option, or the file system will be further
+corrupted.  In some cases, such as file systems that have been resized,
+or have had features enabled after format time, it is impossible to
+overwrite all of the superblocks correctly, and at least some file system
+corruption will occur.  It is best to run this on a full copy of the
+file system so other options can be tried if this doesn't work.
 .\" .TP
 .\" .BI \-t " test"
 .\" Check the device for bad blocks before creating the file system
 .\" using the specified test.
 .TP
-.BI \-T " fs-type"
-Specify how the filesystem is going to be used, so that mke2fs can 
-chose optimal filesystem parameters for that use.  The supported
-filesystem types are:
+.BI \-t " fs-type"
+Specify the file system type (i.e., ext2, ext3, ext4, etc.) that is
+to be created.
+If this option is not specified,
+.B mke2fs
+will pick a default either via how
+the command was run (for example, using a name of the form mkfs.ext2,
+mkfs.ext3, etc.) or via a default as defined by the
+.B /etc/mke2fs.conf
+file.   This option controls which file system options are used by
+default, based on the
+.B fstypes
+configuration stanza in
+.BR /etc/mke2fs.conf .
+.sp
+If the
+.B \-O
+option is used to explicitly add or remove file system options that
+should be set in the newly created file system, the
+resulting file system may not be supported by the requested
+.IR fs-type .
+(e.g., "\fBmke2fs \-t ext3 \-O extent /dev/sdXX\fR" will create a
+file system that is not supported by the ext3 implementation as found in
+the Linux kernel; and "\fBmke2fs \-t ext3 \-O ^has_journal /dev/hdXX\fR"
+will create a file system that does not have a journal and hence will not
+be supported by the ext3 file system code in the Linux kernel.)
+.TP
+.BI \-T " usage-type[,...]"
+Specify how the file system is going to be used, so that
+.B mke2fs
+can choose optimal file system parameters for that use.  The usage
+types that are supported are defined in the configuration file
+.BR /etc/mke2fs.conf .
+The user may specify one or more usage types
+using a comma separated list.
+.sp
+If this option is is not specified,
+.B mke2fs
+will pick a single default usage type based on the size of the file system to
+be created.  If the file system size is less than 3 megabytes,
+.B mke2fs
+will use the file system type
+.IR floppy .
+If the file system size is greater than or equal to 3 but less than
+512 megabytes,
+.BR mke2fs (8)
+will use the file system type
+.IR small .
+If the file system size is greater than or equal to 4 terabytes but less than
+16 terabytes,
+.BR mke2fs (8)
+will use the file system type
+.IR big .
+If the file system size is greater than or equal to 16 terabytes,
+.BR mke2fs (8)
+will use the file system type
+.IR huge .
+Otherwise,
+.BR mke2fs (8)
+will use the default file system type
+.IR default .
+.TP
+.BI \-U " UUID"
+Set the universally unique identifier (UUID) of the file system to
+.IR UUID .
+The format of the UUID is a series of hex digits separated by hyphens,
+like this:
+"c1b9d5a2-f162-11cf-9ece-0020afc76f16".
+The
+.I UUID
+parameter may also be one of the following:
 .RS 1.2i
-.TP 1.2i
-news
-one inode per 4kb block
 .TP
-largefile
-one inode per megabyte
+.I clear
+clear the file system UUID
 .TP
-largefile4
-one inode per 4 megabytes
+.I random
+generate a new randomly-generated UUID
+.TP
+.I time
+generate a new time-based UUID
 .RE
 .TP
 .B \-v
 Verbose execution.
 .TP
 .B \-V
-Print the version number of 
+Print the version number of
 .B mke2fs
 and exit.
+.TP
+.BI \-z " undo_file"
+Before overwriting a file system block, write the old contents of the block to
+an undo file.  This undo file can be used with e2undo(8) to restore the old
+contents of the file system should something go wrong.  If the empty string is
+passed as the undo_file argument, the undo file will be written to a file named
+mke2fs-\fIdevice\fR.e2undo in the directory specified via the
+\fIE2FSPROGS_UNDO_DIR\fR environment variable or the \fIundo_dir\fR directive
+in the configuration file.
+
+WARNING: The undo file cannot be used to recover from a power or system crash.
+.SH ENVIRONMENT
+.TP
+.B MKE2FS_SYNC
+If set to non-zero integer value, its value is used to determine how often
+.BR sync (2)
+is called during inode table initialization.
+.TP
+.B MKE2FS_CONFIG
+Determines the location of the configuration file (see
+.BR mke2fs.conf (5)).
+.TP
+.B MKE2FS_FIRST_META_BG
+If set to non-zero integer value, its value is used to determine first meta
+block group. This is mostly for debugging purposes.
+.TP
+.B MKE2FS_DEVICE_SECTSIZE
+If set to non-zero integer value, its value is used to determine logical
+sector size of the
+.IR device .
+.TP
+.B MKE2FS_DEVICE_PHYS_SECTSIZE
+If set to non-zero integer value, its value is used to determine physical
+sector size of the
+.IR device .
+.TP
+.B MKE2FS_SKIP_CHECK_MSG
+If set, do not show the message of file system automatic check caused by
+mount count or check interval.
 .SH AUTHOR
 This version of
 .B mke2fs
 has been written by Theodore Ts'o <tytso@mit.edu>.
-.SH BUGS
-.B mke2fs
-accepts the
-.B \-f
-option but currently ignores it because the second
-extended file system does not support fragments yet.
-.br
-There may be other ones.  Please, report them to the author.
 .SH AVAILABILITY
 .B mke2fs
-is part of the e2fsprogs package and is available from 
+is part of the e2fsprogs package and is available from
 http://e2fsprogs.sourceforge.net.
 .SH SEE ALSO
+.BR mke2fs.conf (5),
 .BR badblocks (8),
 .BR dumpe2fs (8),
 .BR e2fsck (8),
-.BR tune2fs (8)
+.BR tune2fs (8),
+.BR ext4 (5)