[3.7/4] mkfs.xfs.8: parameterize sysconfdir
diff mbox

Message ID e6280601-cdc5-ddab-9320-e6156b2cdbf3@sandeen.net
State New
Headers show

Commit Message

Eric Sandeen May 30, 2018, 9:05 p.m. UTC
This is a big looking patch, but it's just moving mkfs.xfs.8
to mkfs.xfs.8.in, substituting /etc for @sysconfdir@, and setting
up a little bit of makefile magic to do the substitution and make
the resulting manpage clean-able.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
---


--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Darrick J. Wong May 30, 2018, 10:10 p.m. UTC | #1
On Wed, May 30, 2018 at 04:05:47PM -0500, Eric Sandeen wrote:
> This is a big looking patch, but it's just moving mkfs.xfs.8
> to mkfs.xfs.8.in, substituting /etc for @sysconfdir@, and setting
> up a little bit of makefile magic to do the substitution and make
> the resulting manpage clean-able.
> 
> Signed-off-by: Eric Sandeen <sandeen@redhat.com>

Looks ok modulo comments in the 3.5/4 patch.

Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>

--D

> ---
> 
> diff --git a/man/man8/Makefile b/man/man8/Makefile
> index 36620da..08e5e0d 100644
> --- a/man/man8/Makefile
> +++ b/man/man8/Makefile
> @@ -7,14 +7,20 @@ include $(TOPDIR)/include/builddefs
>  MAN_SECTION	= 8
> -MAN_PAGES	= $(shell echo *.$(MAN_SECTION))
> +MAN_PAGES	= $(shell echo *.$(MAN_SECTION)) mkfs.xfs.8
>  MAN_DEST	= $(PKG_MAN_DIR)/man$(MAN_SECTION)
>  LSRCFILES	= $(MAN_PAGES)
>  default : $(MAN_PAGES)
> +LDIRT		= mkfs.xfs.8
> +
>  include $(BUILDRULES)
> +mkfs.xfs.8: mkfs.xfs.8.in
> +	@echo "    [SED]    $@"
> +	$(Q)$(SED) -e "s|@sysconfdir@|$(PKG_ETC_DIR)|g" < $< > $@
> +
>  install : default
>  	$(INSTALL) -m 755 -d $(MAN_DEST)
>  	$(INSTALL_MAN)
> diff --git a/man/man8/mkfs.xfs.8 b/man/man8/mkfs.xfs.8
> deleted file mode 100644
> index ca8c775..0000000
> --- a/man/man8/mkfs.xfs.8
> +++ /dev/null
> @@ -1,1016 +0,0 @@
> -.TH mkfs.xfs 8
> -.SH NAME
> -mkfs.xfs \- construct an XFS filesystem
> -.SH SYNOPSIS
> -.B mkfs.xfs
> -[
> -.B \-c
> -.I configuration
> -] [
> -[
> -.B \-b
> -.I block_size_options
> -] [
> -.B \-m
> -.I global_metadata_options
> -] [
> -.B \-d
> -.I data_section_options
> -] [
> -.B \-f
> -] [
> -.B \-i
> -.I inode_options
> -] [
> -.B \-l
> -.I log_section_options
> -] [
> -.B \-n
> -.I naming_options
> -] [
> -.B \-p
> -.I protofile
> -] [
> -.B \-q
> -] [
> -.B \-r
> -.I realtime_section_options
> -] [
> -.B \-s
> -.I sector_size_options
> -] [
> -.B \-L
> -.I label
> -] [
> -.B \-N
> -] [
> -.B \-K
> -]
> -.I device
> -.br
> -.B mkfs.xfs \-V
> -.SH DESCRIPTION
> -.B mkfs.xfs
> -constructs an XFS filesystem by writing on a special
> -file using the values found in the arguments of the command line.
> -It is invoked automatically by
> -.BR mkfs (8)
> -when it is given the
> -.B \-t xfs
> -option.
> -.PP
> -In its simplest (and most commonly used form), the size of the
> -filesystem is determined from the disk driver.  As an example, to make
> -a filesystem with an internal log on the first partition on the first
> -SCSI disk, use:
> -.IP
> -.B mkfs.xfs /dev/sda1
> -.PP
> -The metadata log can be placed on another device to reduce the number
> -of disk seeks.  To create a filesystem on the first partition on the
> -first SCSI disk with a 10MiB log located on the first partition
> -on the second SCSI disk, use:
> -.RS
> -.HP
> -.B mkfs.xfs\ \-l\ logdev=/dev/sdb1,size=10m /dev/sda1
> -.RE
> -.PP
> -Each of the
> -.I option
> -elements in the argument list above can be given as multiple comma-separated
> -suboptions if multiple suboptions apply to the same option.
> -Equivalently, each main option can be given multiple times with
> -different suboptions.
> -For example,
> -.B \-l internal,size=10m
> -and
> -.B \-l internal \-l size=10m
> -are equivalent.
> -.PP
> -In the descriptions below, sizes are given in sectors, bytes, blocks,
> -kilobytes, megabytes, gigabytes, etc.
> -Sizes are treated as hexadecimal if prefixed by 0x or 0X,
> -octal if prefixed by 0, or decimal otherwise.
> -The following lists possible multiplication suffixes:
> -.RS
> -.PD 0
> -.HP
> -.BR s "\ \-\ multiply by sector size (default = 512, see " \-s
> -option below).
> -.HP
> -.BR b "\ \-\ multiply by filesystem block size (default = 4K, see " \-b
> -option below).
> -.HP
> -.BR k "\ \-\ multiply by one kilobyte (1,024 bytes)."
> -.HP
> -.BR m "\ \-\ multiply by one megabyte (1,048,576 bytes)."
> -.HP
> -.BR g "\ \-\ multiply by one gigabyte (1,073,741,824 bytes)."
> -.HP
> -.BR t "\ \-\ multiply by one terabyte (1,099,511,627,776 bytes)."
> -.HP
> -.BR p "\ \-\ multiply by one petabyte (1,024 terabytes)."
> -.HP
> -.BR e "\ \-\ multiply by one exabyte (1,048,576 terabytes)."
> -.PD
> -.RE
> -.PP
> -When specifying parameters in units of sectors or filesystem blocks, the
> -.B \-s
> -option or the
> -.B \-b
> -option first needs to be added to the command line.
> -Failure to specify the size of the units will result in illegal value errors
> -when parameters are quantified in those units.
> -.PP
> -Many feature options allow an optional argument of 0 or 1, to explicitly
> -disable or enable the functionality.
> -.SH DEFAULT VALUES
> -.BR mkfs.xfs (8)
> -contains built-in default values for every option as described in the sections
> -below.
> -These built-in defaults may evolve over time as new capabilities are added.
> -If the file
> -.B /etc/xfs/mkfs/default
> -exists, it will be parsed to override built-in defaults, and the defaults
> -described in sections below may no longer apply.
> -.PP
> -The
> -.B \-c
> -option may also be used to specify an alternate configuration file
> -as described in the OPTIONS section.
> -.SH OPTIONS
> -.TP
> -.BI \-c " configuration"
> -This option may be used to specify a configuration file other than
> -.B /etc/xfs/mkfs/default
> -to override selected built-in parameter defaults.
> -If
> -.B configuration
> -is a simple filename with no path components, it will be searched in the
> -.B /etc/xfs/mkfs/
> -directory.
> -If
> -.B configuration
> -is an absolute pathname, that path will be used to find the configuration file.
> -Otherwise, if
> -.B configuration
> -begins with
> -.BR \'./\' " or " \'../\'
> -it will be treated as a pathname relative to the current working directory.
> -See also the CONFIGURATION FILE FORMAT section below.
> -.TP
> -.BI \-b " block_size_options"
> -This option specifies the fundamental block size of the filesystem.
> -The valid
> -.I block_size_option
> -is:
> -.RS 1.2i
> -.TP
> -.BI size= value
> -The filesystem block size is specified with a
> -.I value
> -in bytes. The default value is 4096 bytes (4 KiB), the minimum is 512, and the
> -maximum is 65536 (64 KiB).
> -.IP
> -To specify any options on the command line in units of filesystem blocks, this
> -option must be specified first so that the filesystem block size is
> -applied consistently to all options.
> -.IP
> -Although
> -.B mkfs.xfs
> -will accept any of these values and create a valid filesystem,
> -XFS on Linux can only mount filesystems with pagesize or smaller blocks.
> -.RE
> -.TP
> -.BI \-m " global_metadata_options"
> -These options specify metadata format options that either apply to the entire
> -filesystem or aren't easily characterised by a specific functionality group. The
> -valid
> -.I global_metadata_options
> -are:
> -.RS 1.2i
> -.TP
> -.BI crc= value
> -This is used to create a filesystem which maintains and checks CRC information
> -in all metadata objects on disk. The value is either 0 to disable the feature,
> -or 1 to enable the use of CRCs.
> -.IP
> -CRCs enable enhanced error detection due to hardware issues, whilst the format
> -changes also improves crash recovery algorithms and the ability of various tools
> -to validate and repair metadata corruptions when they are found.  The CRC
> -algorithm used is CRC32c, so the overhead is dependent on CPU architecture as
> -some CPUs have hardware acceleration of this algorithm.  Typically the overhead
> -of calculating and checking the CRCs is not noticeable in normal operation.
> -.IP
> -By default,
> -.B mkfs.xfs
> -will enable metadata CRCs.
> -.TP
> -.BI finobt= value
> -This option enables the use of a separate free inode btree index in each
> -allocation group. The value is either 0 to disable the feature, or 1 to create
> -a free inode btree in each allocation group.
> -.IP
> -The free inode btree mirrors the existing allocated inode btree index which
> -indexes both used and free inodes. The free inode btree does not index used
> -inodes, allowing faster, more consistent inode allocation performance as
> -filesystems age.
> -.IP
> -By default,
> -.B mkfs.xfs
> -will create free inode btrees for filesystems created with the (default)
> -.B \-m crc=1
> -option set. When the option
> -.B \-m crc=0
> -is used, the free inode btree feature is not supported and is disabled.
> -.TP
> -.BI uuid= value
> -Use the given value as the filesystem UUID for the newly created filesystem.
> -The default is to generate a random UUID.
> -.TP
> -.BI rmapbt= value
> -This option enables the creation of a reverse-mapping btree index in each
> -allocation group.  The value is either 0 to disable the feature, or 1 to
> -create the btree.
> -.IP
> -The reverse mapping btree maps filesystem blocks to the owner of the
> -filesystem block.  Most of the mappings will be to an inode number and an
> -offset, though there will also be mappings to filesystem metadata.  This
> -secondary metadata can be used to validate the primary metadata or to
> -pinpoint exactly which data has been lost when a disk error occurs.
> -.IP
> -By default,
> -.B mkfs.xfs
> -will not create reverse mapping btrees.  This feature is only available
> -for filesystems created with the (default)
> -.B \-m crc=1
> -option set. When the option
> -.B \-m crc=0
> -is used, the reverse mapping btree feature is not supported and is disabled.
> -.TP
> -.BI reflink= value
> -This option enables the use of a separate reference count btree index in each
> -allocation group. The value is either 0 to disable the feature, or 1 to create
> -a reference count btree in each allocation group.
> -.IP
> -The reference count btree enables the sharing of physical extents between
> -the data forks of different files, which is commonly known as "reflink".
> -Unlike traditional Unix filesystems which assume that every inode and
> -logical block pair map to a unique physical block, a reflink-capable
> -XFS filesystem removes the uniqueness requirement, allowing up to four
> -billion arbitrary inode/logical block pairs to map to a physical block.
> -If a program tries to write to a multiply-referenced block in a file, the write
> -will be redirected to a new block, and that file's logical-to-physical
> -mapping will be changed to the new block ("copy on write").  This feature
> -enables the creation of per-file snapshots and deduplication.  It is only
> -available for the data forks of regular files.
> -.IP
> -By default,
> -.B mkfs.xfs
> -will not create reference count btrees and therefore will not enable the
> -reflink feature.  This feature is only available for filesystems created with
> -the (default)
> -.B \-m crc=1
> -option set. When the option
> -.B \-m crc=0
> -is used, the reference count btree feature is not supported and reflink is
> -disabled.
> -.RE
> -.TP
> -.BI \-d " data_section_options"
> -These options specify the location, size, and other parameters of the
> -data section of the filesystem. The valid
> -.I data_section_options
> -are:
> -.RS 1.2i
> -.TP
> -.BI agcount= value
> -This is used to specify the number of allocation groups. The data section
> -of the filesystem is divided into allocation groups to improve the
> -performance of XFS. More allocation groups imply that more parallelism
> -can be achieved when allocating blocks and inodes. The minimum
> -allocation group size is 16 MiB; the maximum size is just under 1 TiB.
> -The data section of the filesystem is divided into
> -.I value
> -allocation groups (default value is scaled automatically based
> -on the underlying device size).
> -.TP
> -.BI agsize= value
> -This is an alternative to using the
> -.B agcount
> -suboption. The
> -.I value
> -is the desired size of the allocation group expressed in bytes
> -(usually using the
> -.BR m " or " g
> -suffixes).
> -This value must be a multiple of the filesystem block size, and
> -must be at least 16MiB, and no more than 1TiB, and may
> -be automatically adjusted to properly align with the stripe geometry.
> -The
> -.B agcount
> -and
> -.B agsize
> -suboptions are mutually exclusive.
> -.TP
> -.BI cowextsize= value
> -Set the copy-on-write extent size hint on all inodes created by
> -.BR mkfs.xfs "."
> -The value must be provided in units of filesystem blocks.
> -If the value is zero, the default value (currently 32 blocks) will be used.
> -Directories will pass on this hint to newly created children.
> -.TP
> -.BI name= value
> -This can be used to specify the name of the special file containing
> -the filesystem. In this case, the log section must be specified as
> -.B internal
> -(with a size, see the
> -.B \-l
> -option below) and there can be no real-time section.
> -.TP
> -.BI file[= value ]
> -This is used to specify that the file given by the
> -.B name
> -suboption is a regular file. The
> -.I value
> -is either 0 or 1, with 1 signifying that the file is regular. This
> -suboption is used only to make a filesystem image. If the
> -.I value
> -is omitted then 1 is assumed.
> -.TP
> -.BI size= value
> -This is used to specify the size of the data section. This suboption
> -is required if
> -.B \-d file[=1]
> -is given. Otherwise, it is only needed if the filesystem should occupy
> -less space than the size of the special file.
> -.TP
> -.BI sunit= value
> -This is used to specify the stripe unit for a RAID device or a
> -logical volume. The
> -.I value
> -has to be specified in 512-byte block units. Use the
> -.B su
> -suboption to specify the stripe unit size in bytes. This suboption
> -ensures that data allocations will be stripe unit aligned when the
> -current end of file is being extended and the file size is larger
> -than 512KiB. Also inode allocations and the internal log will be
> -stripe unit aligned.
> -.TP
> -.BI su= value
> -This is an alternative to using
> -.B sunit.
> -The
> -.B su
> -suboption is used to specify the stripe unit for a RAID device or a
> -striped logical volume. The
> -.I value
> -has to be specified in bytes, (usually using the
> -.BR m " or " g
> -suffixes). This
> -.I value
> -must be a multiple of the filesystem block size.
> -.TP
> -.BI swidth= value
> -This is used to specify the stripe width for a RAID device or a
> -striped logical volume. The
> -.I value
> -has to be specified in 512-byte block units. Use the
> -.B sw
> -suboption to specify the stripe width size in bytes.
> -This suboption is required if
> -.B \-d sunit
> -has been specified and it has to be a multiple of the
> -.B \-d sunit
> -suboption.
> -.TP
> -.BI sw= value
> -suboption is an alternative to using
> -.B swidth.
> -The
> -.B sw
> -suboption is used to specify the stripe width for a RAID device or
> -striped logical volume. The
> -.I value
> -is expressed as a multiplier of the stripe unit,
> -usually the same as the number of stripe members in the logical
> -volume configuration, or data disks in a RAID device.
> -.IP
> -When a filesystem is created on a logical volume device,
> -.B mkfs.xfs
> -will automatically query the logical volume for appropriate
> -.B sunit
> -and
> -.B swidth
> -values.
> -.TP
> -.BI noalign
> -This option disables automatic geometry detection and creates the filesystem
> -without stripe geometry alignment even if the underlying storage device provides
> -this information.
> -.TP
> -.BI rtinherit= value
> -If set, all inodes created by
> -.B mkfs.xfs
> -will be created with the realtime flag set.
> -Directories will pass on this flag to newly created children.
> -.TP
> -.BI projinherit= value
> -All inodes created by
> -.B mkfs.xfs
> -will be assigned this project quota id.
> -Directories will pass on the project id to newly created children.
> -.TP
> -.BI extszinherit= value
> -All inodes created by
> -.B mkfs.xfs
> -will have this extent size hint applied.
> -The value must be provided in units of filesystem blocks.
> -Directories will pass on this hint to newly created children.
> -.RE
> -.TP
> -.B \-f
> -Force overwrite when an existing filesystem is detected on the device.
> -By default,
> -.B mkfs.xfs
> -will not write to the device if it suspects that there is a filesystem
> -or partition table on the device already.
> -.TP
> -.BI \-i " inode_options"
> -This option specifies the inode size of the filesystem, and other
> -inode allocation parameters.
> -The XFS inode contains a fixed-size part and a variable-size part.
> -The variable-size part, whose size is affected by this option, can contain:
> -directory data, for small directories;
> -attribute data, for small attribute sets;
> -symbolic link data, for small symbolic links;
> -the extent list for the file, for files with a small number of extents;
> -and the root of a tree describing the location of extents for the file,
> -for files with a large number of extents.
> -.IP
> -The valid
> -.I inode_options
> -are:
> -.RS 1.2i
> -.TP
> -.BI size= value " | perblock=" value
> -The inode size is specified either as a
> -.I value
> -in bytes with
> -.BR size=
> -or as the number fitting in a filesystem block with
> -.BR perblock= .
> -The minimum (and default)
> -.I value
> -is 256 bytes without crc, 512 bytes with crc enabled.
> -The maximum
> -.I value
> -is 2048 (2 KiB) subject to the restriction that
> -the inode size cannot exceed one half of the filesystem block size.
> -.IP
> -XFS uses 64-bit inode numbers internally; however, the number of
> -significant bits in an inode number
> -is affected by filesystem geometry.  In
> -practice, filesystem size and inode size are the predominant factors.
> -The Linux kernel (on 32 bit hardware platforms) and most applications
> -cannot currently handle inode numbers greater than 32 significant bits,
> -so if no inode size is given on the command line,
> -.B mkfs.xfs
> -will attempt to choose a size
> -such that inode numbers will be < 32 bits.  If an inode size
> -is specified, or if a filesystem is sufficiently large,
> -.B mkfs.xfs
> -will warn if this will create inode numbers > 32 significant
> -bits.
> -.TP
> -.BI maxpct= value
> -This specifies the maximum percentage of space in the filesystem that
> -can be allocated to inodes. The default
> -.I value
> -is 25% for filesystems under 1TB, 5% for filesystems under 50TB and 1%
> -for filesystems over 50TB.
> -.IP
> -In the default inode allocation mode, inode blocks are chosen such
> -that inode numbers will not exceed 32 bits, which restricts the inode
> -blocks to the lower portion of the filesystem. The data block
> -allocator will avoid these low blocks to accommodate the specified
> -maxpct, so a high value may result in a filesystem with nothing but
> -inodes in a significant portion of the lower blocks of the filesystem.
> -(This restriction is not present when the filesystem is mounted with
> -the
> -.I "inode64"
> -option on 64-bit platforms).
> -.IP
> -Setting the value to 0 means that essentially all of the filesystem
> -can become inode blocks, subject to inode32 restrictions.
> -.IP
> -This value can be modified with
> -.IR xfs_growfs(8) .
> -.TP
> -.BI align[= value ]
> -This is used to specify that inode allocation is or is not aligned. The
> -.I value
> -is either 0 or 1, with 1 signifying that inodes are allocated aligned.
> -If the
> -.I value
> -is omitted, 1 is assumed. The default is that inodes are aligned.
> -Aligned inode access is normally more efficient than unaligned access;
> -alignment must be established at the time the filesystem is created,
> -since inodes are allocated at that time.
> -This option can be used to turn off inode alignment when the
> -filesystem needs to be mountable by a version of IRIX
> -that does not have the inode alignment feature
> -(any release of IRIX before 6.2, and IRIX 6.2 without XFS patches).
> -.TP
> -.BI attr= value
> -This is used to specify the version of extended attribute inline
> -allocation policy to be used.  By default, this is 2, which uses an
> -efficient algorithm for managing the available inline inode space
> -between attribute and extent data.
> -.IP
> -The previous version 1, which has fixed regions for attribute and
> -extent data, is kept for backwards compatibility with kernels older
> -than version 2.6.16.
> -.TP
> -.BI projid32bit[= value ]
> -This is used to enable 32bit quota project identifiers. The
> -.I value
> -is either 0 or 1, with 1 signifying that 32bit projid are to be enabled.
> -If the value is omitted, 1 is assumed.  (This default changed
> -in release version 3.2.0.)
> -.TP
> -.BI sparse[= value ]
> -Enable sparse inode chunk allocation. The
> -.I value
> -is either 0 or 1, with 1 signifying that sparse allocation is enabled.
> -If the value is omitted, 1 is assumed. Sparse inode allocation is
> -disabled by default. This feature is only available for filesystems
> -formatted with
> -.B \-m crc=1.
> -.IP
> -When enabled, sparse inode allocation allows the filesystem to allocate
> -smaller than the standard 64-inode chunk when free space is severely
> -limited. This feature is useful for filesystems that might fragment free
> -space over time such that no free extents are large enough to
> -accommodate a chunk of 64 inodes. Without this feature enabled, inode
> -allocations can fail with out of space errors under severe fragmented
> -free space conditions.
> -.RE
> -.TP
> -.BI \-l " log_section_options"
> -These options specify the location, size, and other parameters of the
> -log section of the filesystem. The valid
> -.I log_section_options
> -are:
> -.RS 1.2i
> -.TP
> -.BI agnum= value
> -If the log is internal, allocate it in this AG.
> -.TP
> -.BI internal[= value ]
> -This is used to specify that the log section is a piece of the data
> -section instead of being another device or logical volume. The
> -.I value
> -is either 0 or 1, with 1 signifying that the log is internal. If the
> -.I value
> -is omitted, 1 is assumed.
> -.TP
> -.BI logdev= device
> -This is used to specify that the log section should reside on the
> -.I device
> -separate from the data section. The
> -.B internal=1
> -and
> -.B logdev
> -options are mutually exclusive.
> -.TP
> -.BI size= value
> -This is used to specify the size of the log section.
> -.IP
> -If the log is contained within the data section and
> -.B size
> -isn't specified,
> -.B mkfs.xfs
> -will try to select a suitable log size depending
> -on the size of the filesystem.  The actual logsize depends on the
> -filesystem block size and the directory block size.
> -.IP
> -Otherwise, the
> -.B size
> -suboption is only needed if the log section of the filesystem
> -should occupy less space than the size of the special file. The
> -.I value
> -is specified in bytes or blocks, with a
> -.B b
> -suffix meaning multiplication by the filesystem block size, as
> -described above. The overriding minimum value for size is 512 blocks.
> -With some combinations of filesystem block size, inode size,
> -and directory block size, the minimum log size is larger than 512 blocks.
> -.TP
> -.BI version= value
> -This specifies the version of the log. The current default is 2,
> -which allows for larger log buffer sizes, as well as supporting
> -stripe-aligned log writes (see the sunit and su options, below).
> -.IP
> -The previous version 1, which is limited to 32k log buffers and does
> -not support stripe-aligned writes, is kept for backwards compatibility
> -with very old 2.4 kernels.
> -.TP
> -.BI sunit= value
> -This specifies the alignment to be used for log writes. The
> -.I value
> -has to be specified in 512-byte block units. Use the
> -.B su
> -suboption to specify the log stripe unit size in bytes.
> -Log writes will be aligned on this boundary,
> -and rounded up to this boundary.
> -This gives major improvements in performance on some configurations
> -such as software RAID5 when the
> -.B sunit
> -is specified as the filesystem block size.
> -The equivalent byte value must be a multiple of the filesystem block
> -size. Version 2 logs are automatically selected if the log
> -.B sunit
> -suboption is specified.
> -.IP
> -The
> -.B su
> -suboption is an alternative to using
> -.B sunit.
> -.TP
> -.BI su= value
> -This is used to specify the log stripe. The
> -.I value
> -has to be specified in bytes, (usually using the
> -.BR s " or " b
> -suffixes). This value must be a multiple of the filesystem block size.
> -Version 2 logs are automatically selected if the log
> -.B su
> -suboption is specified.
> -.TP
> -.BI lazy-count= value
> -This changes the method of logging various persistent counters
> -in the superblock.  Under metadata intensive workloads, these
> -counters are updated and logged frequently enough that the superblock
> -updates become a serialization point in the filesystem. The
> -.I value
> -can be either 0 or 1.
> -.IP
> -With
> -.BR lazy-count=1 ,
> -the superblock is not modified or logged on every change of the
> -persistent counters. Instead, enough information is kept in
> -other parts of the filesystem to be able to maintain the persistent
> -counter values without needed to keep them in the superblock.
> -This gives significant improvements in performance on some configurations.
> -The default
> -.I value
> -is 1 (on) so you must specify
> -.B lazy-count=0
> -if you want to disable this feature for older kernels which don't support
> -it.
> -.RE
> -.TP
> -.BI \-n " naming_options"
> -These options specify the version and size parameters for the naming
> -(directory) area of the filesystem. The valid
> -.I naming_options
> -are:
> -.RS 1.2i
> -.TP
> -.BI size= value
> -The directory block size is specified with a
> -.I value
> -in bytes.  The block size must be a power of 2 and cannot be less than the
> -filesystem block size.
> -The default size
> -.I value
> -for version 2 directories is 4096 bytes (4 KiB),
> -unless the filesystem block size is larger than 4096,
> -in which case the default
> -.I value
> -is the filesystem block size.
> -For version 1 directories the block size is the same as the
> -filesystem block size.
> -.TP
> -.BI version= value
> -The naming (directory) version
> -.I value
> -can be either 2 or 'ci', defaulting to 2 if unspecified.
> -With version 2 directories, the directory block size can be
> -any power of 2 size from the filesystem block size up to 65536.
> -.IP
> -The
> -.B version=ci
> -option enables ASCII only case-insensitive filename lookup and version
> -2 directories. Filenames are case-preserving, that is, the names
> -are stored in directories using the case they were created with.
> -.IP
> -Note: Version 1 directories are not supported.
> -.TP
> -.BI ftype= value
> -This feature allows the inode type to be stored in the directory
> -structure so that the
> -.BR readdir (3)
> -and
> -.BR getdents (2)
> -do not need to look up the inode to determine the inode type.
> -
> -The
> -.I value
> -is either 0 or 1, with 1 signifying that filetype information
> -will be stored in the directory structure.  The default value is 1.
> -
> -When CRCs are enabled (the default), the ftype functionality is always
> -enabled, and cannot be turned off.
> -.IP
> -.RE
> -.TP
> -.BI \-p " protofile"
> -If the optional
> -.BI \-p " protofile"
> -argument is given,
> -.B mkfs.xfs
> -uses
> -.I protofile
> -as a prototype file and takes its directions from that file.
> -The blocks and inodes specifiers in the
> -.I protofile
> -are provided for backwards compatibility, but are otherwise unused.
> -The syntax of the protofile is defined by a number of tokens separated
> -by spaces or newlines. Note that the line numbers are not part of the
> -syntax but are meant to help you in the following discussion of the file
> -contents.
> -.nf
> -.sp .8v
> -.in +5
> -\f71       /stand/\f1\f2diskboot\f1\f7
> -2       4872 110
> -3       d\-\-777 3 1
> -4       usr     d\-\-777 3 1
> -5       sh      \-\-\-755 3 1 /bin/sh
> -6       ken     d\-\-755 6 1
> -7               $
> -8       b0      b\-\-644 3 1 0 0
> -9       c0      c\-\-644 3 1 0 0
> -10      fifo    p\-\-644 3 1
> -11      slink   l\-\-644 3 1 /a/symbolic/link
> -12      :  This is a comment line
> -13      $
> -14      $\f1
> -.in -5
> -.fi
> -.IP
> -Line 1 is a dummy string.
> -(It was formerly the bootfilename.)
> -It is present for backward
> -compatibility; boot blocks are not used on SGI systems.
> -.IP
> -Note that some string of characters must be present as the first line of
> -the proto file to cause it to be parsed correctly; the value
> -of this string is immaterial since it is ignored.
> -.IP
> -Line 2 contains two numeric values (formerly the numbers of blocks and inodes).
> -These are also merely for backward compatibility: two numeric values must
> -appear at this point for the proto file to be correctly parsed,
> -but their values are immaterial since they are ignored.
> -.IP
> -The lines 3 through 11 specify the files and directories you want to
> -include in this filesystem. Line 3 defines the
> -root directory. Other directories and
> -files that you want in the filesystem
> -are indicated by lines 4 through 6 and
> -lines 8 through 10. Line 11 contains
> -symbolic link syntax.
> -.IP
> -Notice the dollar sign
> -.RB ( $ )
> -syntax on line 7. This syntax directs the
> -.B mkfs.xfs
> -command to terminate the branch of the filesystem it
> -is currently on and then continue
> -from the directory specified by
> -the next line, in this case line 8.
> -It must be the last character
> -on a line.
> -The colon
> -on line 12 introduces a comment; all characters up until the
> -following newline are ignored.
> -Note that this means you cannot
> -have a file in a prototype file whose name contains a colon.
> -The
> -.B $
> -on lines 13 and 14 end the process, since no additional
> -specifications follow.
> -.IP
> -File specifications provide the following:
> -.IP
> -  * file mode
> -.br
> -  * user ID
> -.br
> -  * group ID
> -.br
> -  * the file's beginning contents
> -.P
> -.IP
> -A 6-character string defines the mode for
> -a file. The first character of this string
> -defines the file type. The character range
> -for this first character is
> -.B \-bcdpl.
> -A file may be a regular file, a block special file,
> -a character special file, directory files, named
> -pipes (first-in, first out files), and symbolic
> -links.
> -The second character of the mode string is
> -used to specify setuserID mode, in which case
> -it is
> -.BR u .
> -If setuserID mode is not specified, the second character is
> -.BR \- .
> -The third character of the mode string is
> -used to specify the setgroupID mode, in which
> -case it is
> -.BR g .
> -If setgroupID mode is not specified, the third character is
> -.BR \- .
> -The remaining characters of the mode string are
> -a three digit octal number. This octal number
> -defines the owner, group, and other read, write,
> -and execute permissions for the file, respectively.
> -For more information on file permissions, see the
> -.BR chmod (1)
> -command.
> -.IP
> -Following the mode character string are two
> -decimal number tokens that specify the user and group IDs
> -of the file's owner.
> -.IP
> -In a regular file, the next token specifies the
> -pathname from which the contents and size of the
> -file are copied.
> -In a block or character special file, the next token
> -are two decimal numbers that specify the major and minor
> -device numbers.
> -When a file is a symbolic link, the next token
> -specifies the contents of the link.
> -
> -When the file is a directory, the
> -.B mkfs.xfs
> -command creates the entries
> -.B dot
> -(.) and
> -.B dot-dot
> -(..) and then reads the list of names and file specifications
> -in a recursive manner for all of the entries
> -in the directory. A scan of the protofile is
> -always terminated with the dollar (
> -.B $
> -) token.
> -.TP
> -.B \-q
> -Quiet option. Normally
> -.B mkfs.xfs
> -prints the parameters of the filesystem
> -to be constructed;
> -the
> -.B \-q
> -flag suppresses this.
> -.TP
> -.BI \-r " realtime_section_options"
> -These options specify the location, size, and other parameters of the
> -real-time section of the filesystem. The valid
> -.I realtime_section_options
> -are:
> -.RS 1.2i
> -.TP
> -.BI rtdev= device
> -This is used to specify the
> -.I device
> -which should contain the real-time section of the filesystem.
> -The suboption value is the name of a block device.
> -.TP
> -.BI extsize= value
> -This is used to specify the size of the blocks in the real-time
> -section of the filesystem. This
> -.I value
> -must be a multiple of the filesystem block size. The minimum allowed
> -size is the filesystem block size or 4 KiB (whichever is larger); the
> -default size is the stripe width for striped volumes or 64 KiB for
> -non-striped volumes; the maximum allowed size is 1 GiB. The real-time
> -extent size should be carefully chosen to match the parameters of the
> -physical media used.
> -.TP
> -.BI size= value
> -This is used to specify the size of the real-time section.
> -This suboption is only needed if the real-time section of the
> -filesystem should occupy less space than the size of the partition
> -or logical volume containing the section.
> -.TP
> -.BI noalign
> -This option disables stripe size detection, enforcing a realtime device with no
> -stripe geometry.
> -.RE
> -.TP
> -.BI \-s " sector_size_options"
> -This option specifies the fundamental sector size of the filesystem.
> -The valid
> -.I sector_size_option
> -is:
> -.RS 1.2i
> -.TP
> -.BI size= value
> -The sector size is specified with a
> -.I value
> -in bytes.  The default
> -.I sector_size
> -is 512 bytes. The minimum value for sector size is
> -512; the maximum is 32768 (32 KiB). The
> -.I sector_size
> -must be a power of 2 size and cannot be made larger than the
> -filesystem block size.
> -.IP
> -To specify any options on the command line in units of sectors, this
> -option must be specified first so that the sector size is
> -applied consistently to all options.
> -.RE
> -.TP
> -.BI \-L " label"
> -Set the filesystem
> -.IR label .
> -XFS filesystem labels can be at most 12 characters long; if
> -.I label
> -is longer than 12 characters,
> -.B mkfs.xfs
> -will not proceed with creating the filesystem.  Refer to the
> -.BR mount "(8) and " xfs_admin (8)
> -manual entries for additional information.
> -.TP
> -.B \-N
> -Causes the file system parameters to be printed out without really
> -creating the file system.
> -.TP
> -.B \-K
> -Do not attempt to discard blocks at mkfs time.
> -.TP
> -.B \-V
> -Prints the version number and exits.
> -.SH CONFIGURATION FILE FORMAT
> -The optional default configuration file in
> -.B /etc/xfs/mkfs/default
> -as well as any alternate configuration file specified via the
> -.B \-c
> -option must follow a simple ini-style format as shown below.
> -Available options consist of a subset of the parameters available
> -via the
> -.BR mkfs.xfs (8)
> -command line.
> -Currently all default parameters can only be either enabled or disabled,
> -with a value of 1 to enable or 0 to disable.
> -See below for a list of all supported configuration parameters and their
> -current built-in default settings.
> -.PP
> -.BI [data]
> -.br
> -.BI noalign=0
> -.PP
> -.BI [inode]
> -.br
> -.BI align=1
> -.br
> -.BI projid32bit=1
> -.br
> -.BI sparse=0
> -.PP
> -.BI [log]
> -.br
> -.BI lazy-count=1
> -.PP
> -.BI [metadata]
> -.br
> -.BI crc=1
> -.br
> -.BI finobt=1
> -.br
> -.BI rmapbt=0
> -.br
> -.BI reflink=0
> -.PP
> -.BI [naming]
> -.br
> -.BI ftype=1
> -.PP
> -.BI [rtdev]
> -.br
> -.BI noalign=0
> -.PP
> -.SH SEE ALSO
> -.BR xfs (5),
> -.BR mkfs (8),
> -.BR mount (8),
> -.BR xfs_info (8),
> -.BR xfs_admin (8).
> -.SH BUGS
> -With a prototype file, it is not possible to specify hard links.
> diff --git a/man/man8/mkfs.xfs.8.in b/man/man8/mkfs.xfs.8.in
> new file mode 100644
> index 0000000..c91a92d
> --- /dev/null
> +++ b/man/man8/mkfs.xfs.8.in
> @@ -0,0 +1,1016 @@
> +.TH mkfs.xfs 8
> +.SH NAME
> +mkfs.xfs \- construct an XFS filesystem
> +.SH SYNOPSIS
> +.B mkfs.xfs
> +[
> +.B \-c
> +.I configuration
> +] [
> +[
> +.B \-b
> +.I block_size_options
> +] [
> +.B \-m
> +.I global_metadata_options
> +] [
> +.B \-d
> +.I data_section_options
> +] [
> +.B \-f
> +] [
> +.B \-i
> +.I inode_options
> +] [
> +.B \-l
> +.I log_section_options
> +] [
> +.B \-n
> +.I naming_options
> +] [
> +.B \-p
> +.I protofile
> +] [
> +.B \-q
> +] [
> +.B \-r
> +.I realtime_section_options
> +] [
> +.B \-s
> +.I sector_size_options
> +] [
> +.B \-L
> +.I label
> +] [
> +.B \-N
> +] [
> +.B \-K
> +]
> +.I device
> +.br
> +.B mkfs.xfs \-V
> +.SH DESCRIPTION
> +.B mkfs.xfs
> +constructs an XFS filesystem by writing on a special
> +file using the values found in the arguments of the command line.
> +It is invoked automatically by
> +.BR mkfs (8)
> +when it is given the
> +.B \-t xfs
> +option.
> +.PP
> +In its simplest (and most commonly used form), the size of the
> +filesystem is determined from the disk driver.  As an example, to make
> +a filesystem with an internal log on the first partition on the first
> +SCSI disk, use:
> +.IP
> +.B mkfs.xfs /dev/sda1
> +.PP
> +The metadata log can be placed on another device to reduce the number
> +of disk seeks.  To create a filesystem on the first partition on the
> +first SCSI disk with a 10MiB log located on the first partition
> +on the second SCSI disk, use:
> +.RS
> +.HP
> +.B mkfs.xfs\ \-l\ logdev=/dev/sdb1,size=10m /dev/sda1
> +.RE
> +.PP
> +Each of the
> +.I option
> +elements in the argument list above can be given as multiple comma-separated
> +suboptions if multiple suboptions apply to the same option.
> +Equivalently, each main option can be given multiple times with
> +different suboptions.
> +For example,
> +.B \-l internal,size=10m
> +and
> +.B \-l internal \-l size=10m
> +are equivalent.
> +.PP
> +In the descriptions below, sizes are given in sectors, bytes, blocks,
> +kilobytes, megabytes, gigabytes, etc.
> +Sizes are treated as hexadecimal if prefixed by 0x or 0X,
> +octal if prefixed by 0, or decimal otherwise.
> +The following lists possible multiplication suffixes:
> +.RS
> +.PD 0
> +.HP
> +.BR s "\ \-\ multiply by sector size (default = 512, see " \-s
> +option below).
> +.HP
> +.BR b "\ \-\ multiply by filesystem block size (default = 4K, see " \-b
> +option below).
> +.HP
> +.BR k "\ \-\ multiply by one kilobyte (1,024 bytes)."
> +.HP
> +.BR m "\ \-\ multiply by one megabyte (1,048,576 bytes)."
> +.HP
> +.BR g "\ \-\ multiply by one gigabyte (1,073,741,824 bytes)."
> +.HP
> +.BR t "\ \-\ multiply by one terabyte (1,099,511,627,776 bytes)."
> +.HP
> +.BR p "\ \-\ multiply by one petabyte (1,024 terabytes)."
> +.HP
> +.BR e "\ \-\ multiply by one exabyte (1,048,576 terabytes)."
> +.PD
> +.RE
> +.PP
> +When specifying parameters in units of sectors or filesystem blocks, the
> +.B \-s
> +option or the
> +.B \-b
> +option first needs to be added to the command line.
> +Failure to specify the size of the units will result in illegal value errors
> +when parameters are quantified in those units.
> +.PP
> +Many feature options allow an optional argument of 0 or 1, to explicitly
> +disable or enable the functionality.
> +.SH DEFAULT VALUES
> +.BR mkfs.xfs (8)
> +contains built-in default values for every option as described in the sections
> +below.
> +These built-in defaults may evolve over time as new capabilities are added.
> +If the file
> +.B @sysconfdir@/xfs/mkfs/default
> +exists, it will be parsed to override built-in defaults, and the defaults
> +described in sections below may no longer apply.
> +.PP
> +The
> +.B \-c
> +option may also be used to specify an alternate configuration file
> +as described in the OPTIONS section.
> +.SH OPTIONS
> +.TP
> +.BI \-c " configuration"
> +This option may be used to specify a configuration file other than
> +.B @sysconfdir@/xfs/mkfs/default
> +to override selected built-in parameter defaults.
> +If
> +.B configuration
> +is a simple filename with no path components, it will be searched in the
> +.B @sysconfdir@/xfs/mkfs/
> +directory.
> +If
> +.B configuration
> +is an absolute pathname, that path will be used to find the configuration file.
> +Otherwise, if
> +.B configuration
> +begins with
> +.BR \'./\' " or " \'../\'
> +it will be treated as a pathname relative to the current working directory.
> +See also the CONFIGURATION FILE FORMAT section below.
> +.TP
> +.BI \-b " block_size_options"
> +This option specifies the fundamental block size of the filesystem.
> +The valid
> +.I block_size_option
> +is:
> +.RS 1.2i
> +.TP
> +.BI size= value
> +The filesystem block size is specified with a
> +.I value
> +in bytes. The default value is 4096 bytes (4 KiB), the minimum is 512, and the
> +maximum is 65536 (64 KiB).
> +.IP
> +To specify any options on the command line in units of filesystem blocks, this
> +option must be specified first so that the filesystem block size is
> +applied consistently to all options.
> +.IP
> +Although
> +.B mkfs.xfs
> +will accept any of these values and create a valid filesystem,
> +XFS on Linux can only mount filesystems with pagesize or smaller blocks.
> +.RE
> +.TP
> +.BI \-m " global_metadata_options"
> +These options specify metadata format options that either apply to the entire
> +filesystem or aren't easily characterised by a specific functionality group. The
> +valid
> +.I global_metadata_options
> +are:
> +.RS 1.2i
> +.TP
> +.BI crc= value
> +This is used to create a filesystem which maintains and checks CRC information
> +in all metadata objects on disk. The value is either 0 to disable the feature,
> +or 1 to enable the use of CRCs.
> +.IP
> +CRCs enable enhanced error detection due to hardware issues, whilst the format
> +changes also improves crash recovery algorithms and the ability of various tools
> +to validate and repair metadata corruptions when they are found.  The CRC
> +algorithm used is CRC32c, so the overhead is dependent on CPU architecture as
> +some CPUs have hardware acceleration of this algorithm.  Typically the overhead
> +of calculating and checking the CRCs is not noticeable in normal operation.
> +.IP
> +By default,
> +.B mkfs.xfs
> +will enable metadata CRCs.
> +.TP
> +.BI finobt= value
> +This option enables the use of a separate free inode btree index in each
> +allocation group. The value is either 0 to disable the feature, or 1 to create
> +a free inode btree in each allocation group.
> +.IP
> +The free inode btree mirrors the existing allocated inode btree index which
> +indexes both used and free inodes. The free inode btree does not index used
> +inodes, allowing faster, more consistent inode allocation performance as
> +filesystems age.
> +.IP
> +By default,
> +.B mkfs.xfs
> +will create free inode btrees for filesystems created with the (default)
> +.B \-m crc=1
> +option set. When the option
> +.B \-m crc=0
> +is used, the free inode btree feature is not supported and is disabled.
> +.TP
> +.BI uuid= value
> +Use the given value as the filesystem UUID for the newly created filesystem.
> +The default is to generate a random UUID.
> +.TP
> +.BI rmapbt= value
> +This option enables the creation of a reverse-mapping btree index in each
> +allocation group.  The value is either 0 to disable the feature, or 1 to
> +create the btree.
> +.IP
> +The reverse mapping btree maps filesystem blocks to the owner of the
> +filesystem block.  Most of the mappings will be to an inode number and an
> +offset, though there will also be mappings to filesystem metadata.  This
> +secondary metadata can be used to validate the primary metadata or to
> +pinpoint exactly which data has been lost when a disk error occurs.
> +.IP
> +By default,
> +.B mkfs.xfs
> +will not create reverse mapping btrees.  This feature is only available
> +for filesystems created with the (default)
> +.B \-m crc=1
> +option set. When the option
> +.B \-m crc=0
> +is used, the reverse mapping btree feature is not supported and is disabled.
> +.TP
> +.BI reflink= value
> +This option enables the use of a separate reference count btree index in each
> +allocation group. The value is either 0 to disable the feature, or 1 to create
> +a reference count btree in each allocation group.
> +.IP
> +The reference count btree enables the sharing of physical extents between
> +the data forks of different files, which is commonly known as "reflink".
> +Unlike traditional Unix filesystems which assume that every inode and
> +logical block pair map to a unique physical block, a reflink-capable
> +XFS filesystem removes the uniqueness requirement, allowing up to four
> +billion arbitrary inode/logical block pairs to map to a physical block.
> +If a program tries to write to a multiply-referenced block in a file, the write
> +will be redirected to a new block, and that file's logical-to-physical
> +mapping will be changed to the new block ("copy on write").  This feature
> +enables the creation of per-file snapshots and deduplication.  It is only
> +available for the data forks of regular files.
> +.IP
> +By default,
> +.B mkfs.xfs
> +will not create reference count btrees and therefore will not enable the
> +reflink feature.  This feature is only available for filesystems created with
> +the (default)
> +.B \-m crc=1
> +option set. When the option
> +.B \-m crc=0
> +is used, the reference count btree feature is not supported and reflink is
> +disabled.
> +.RE
> +.TP
> +.BI \-d " data_section_options"
> +These options specify the location, size, and other parameters of the
> +data section of the filesystem. The valid
> +.I data_section_options
> +are:
> +.RS 1.2i
> +.TP
> +.BI agcount= value
> +This is used to specify the number of allocation groups. The data section
> +of the filesystem is divided into allocation groups to improve the
> +performance of XFS. More allocation groups imply that more parallelism
> +can be achieved when allocating blocks and inodes. The minimum
> +allocation group size is 16 MiB; the maximum size is just under 1 TiB.
> +The data section of the filesystem is divided into
> +.I value
> +allocation groups (default value is scaled automatically based
> +on the underlying device size).
> +.TP
> +.BI agsize= value
> +This is an alternative to using the
> +.B agcount
> +suboption. The
> +.I value
> +is the desired size of the allocation group expressed in bytes
> +(usually using the
> +.BR m " or " g
> +suffixes).
> +This value must be a multiple of the filesystem block size, and
> +must be at least 16MiB, and no more than 1TiB, and may
> +be automatically adjusted to properly align with the stripe geometry.
> +The
> +.B agcount
> +and
> +.B agsize
> +suboptions are mutually exclusive.
> +.TP
> +.BI cowextsize= value
> +Set the copy-on-write extent size hint on all inodes created by
> +.BR mkfs.xfs "."
> +The value must be provided in units of filesystem blocks.
> +If the value is zero, the default value (currently 32 blocks) will be used.
> +Directories will pass on this hint to newly created children.
> +.TP
> +.BI name= value
> +This can be used to specify the name of the special file containing
> +the filesystem. In this case, the log section must be specified as
> +.B internal
> +(with a size, see the
> +.B \-l
> +option below) and there can be no real-time section.
> +.TP
> +.BI file[= value ]
> +This is used to specify that the file given by the
> +.B name
> +suboption is a regular file. The
> +.I value
> +is either 0 or 1, with 1 signifying that the file is regular. This
> +suboption is used only to make a filesystem image. If the
> +.I value
> +is omitted then 1 is assumed.
> +.TP
> +.BI size= value
> +This is used to specify the size of the data section. This suboption
> +is required if
> +.B \-d file[=1]
> +is given. Otherwise, it is only needed if the filesystem should occupy
> +less space than the size of the special file.
> +.TP
> +.BI sunit= value
> +This is used to specify the stripe unit for a RAID device or a
> +logical volume. The
> +.I value
> +has to be specified in 512-byte block units. Use the
> +.B su
> +suboption to specify the stripe unit size in bytes. This suboption
> +ensures that data allocations will be stripe unit aligned when the
> +current end of file is being extended and the file size is larger
> +than 512KiB. Also inode allocations and the internal log will be
> +stripe unit aligned.
> +.TP
> +.BI su= value
> +This is an alternative to using
> +.B sunit.
> +The
> +.B su
> +suboption is used to specify the stripe unit for a RAID device or a
> +striped logical volume. The
> +.I value
> +has to be specified in bytes, (usually using the
> +.BR m " or " g
> +suffixes). This
> +.I value
> +must be a multiple of the filesystem block size.
> +.TP
> +.BI swidth= value
> +This is used to specify the stripe width for a RAID device or a
> +striped logical volume. The
> +.I value
> +has to be specified in 512-byte block units. Use the
> +.B sw
> +suboption to specify the stripe width size in bytes.
> +This suboption is required if
> +.B \-d sunit
> +has been specified and it has to be a multiple of the
> +.B \-d sunit
> +suboption.
> +.TP
> +.BI sw= value
> +suboption is an alternative to using
> +.B swidth.
> +The
> +.B sw
> +suboption is used to specify the stripe width for a RAID device or
> +striped logical volume. The
> +.I value
> +is expressed as a multiplier of the stripe unit,
> +usually the same as the number of stripe members in the logical
> +volume configuration, or data disks in a RAID device.
> +.IP
> +When a filesystem is created on a logical volume device,
> +.B mkfs.xfs
> +will automatically query the logical volume for appropriate
> +.B sunit
> +and
> +.B swidth
> +values.
> +.TP
> +.BI noalign
> +This option disables automatic geometry detection and creates the filesystem
> +without stripe geometry alignment even if the underlying storage device provides
> +this information.
> +.TP
> +.BI rtinherit= value
> +If set, all inodes created by
> +.B mkfs.xfs
> +will be created with the realtime flag set.
> +Directories will pass on this flag to newly created children.
> +.TP
> +.BI projinherit= value
> +All inodes created by
> +.B mkfs.xfs
> +will be assigned this project quota id.
> +Directories will pass on the project id to newly created children.
> +.TP
> +.BI extszinherit= value
> +All inodes created by
> +.B mkfs.xfs
> +will have this extent size hint applied.
> +The value must be provided in units of filesystem blocks.
> +Directories will pass on this hint to newly created children.
> +.RE
> +.TP
> +.B \-f
> +Force overwrite when an existing filesystem is detected on the device.
> +By default,
> +.B mkfs.xfs
> +will not write to the device if it suspects that there is a filesystem
> +or partition table on the device already.
> +.TP
> +.BI \-i " inode_options"
> +This option specifies the inode size of the filesystem, and other
> +inode allocation parameters.
> +The XFS inode contains a fixed-size part and a variable-size part.
> +The variable-size part, whose size is affected by this option, can contain:
> +directory data, for small directories;
> +attribute data, for small attribute sets;
> +symbolic link data, for small symbolic links;
> +the extent list for the file, for files with a small number of extents;
> +and the root of a tree describing the location of extents for the file,
> +for files with a large number of extents.
> +.IP
> +The valid
> +.I inode_options
> +are:
> +.RS 1.2i
> +.TP
> +.BI size= value " | perblock=" value
> +The inode size is specified either as a
> +.I value
> +in bytes with
> +.BR size=
> +or as the number fitting in a filesystem block with
> +.BR perblock= .
> +The minimum (and default)
> +.I value
> +is 256 bytes without crc, 512 bytes with crc enabled.
> +The maximum
> +.I value
> +is 2048 (2 KiB) subject to the restriction that
> +the inode size cannot exceed one half of the filesystem block size.
> +.IP
> +XFS uses 64-bit inode numbers internally; however, the number of
> +significant bits in an inode number
> +is affected by filesystem geometry.  In
> +practice, filesystem size and inode size are the predominant factors.
> +The Linux kernel (on 32 bit hardware platforms) and most applications
> +cannot currently handle inode numbers greater than 32 significant bits,
> +so if no inode size is given on the command line,
> +.B mkfs.xfs
> +will attempt to choose a size
> +such that inode numbers will be < 32 bits.  If an inode size
> +is specified, or if a filesystem is sufficiently large,
> +.B mkfs.xfs
> +will warn if this will create inode numbers > 32 significant
> +bits.
> +.TP
> +.BI maxpct= value
> +This specifies the maximum percentage of space in the filesystem that
> +can be allocated to inodes. The default
> +.I value
> +is 25% for filesystems under 1TB, 5% for filesystems under 50TB and 1%
> +for filesystems over 50TB.
> +.IP
> +In the default inode allocation mode, inode blocks are chosen such
> +that inode numbers will not exceed 32 bits, which restricts the inode
> +blocks to the lower portion of the filesystem. The data block
> +allocator will avoid these low blocks to accommodate the specified
> +maxpct, so a high value may result in a filesystem with nothing but
> +inodes in a significant portion of the lower blocks of the filesystem.
> +(This restriction is not present when the filesystem is mounted with
> +the
> +.I "inode64"
> +option on 64-bit platforms).
> +.IP
> +Setting the value to 0 means that essentially all of the filesystem
> +can become inode blocks, subject to inode32 restrictions.
> +.IP
> +This value can be modified with
> +.IR xfs_growfs(8) .
> +.TP
> +.BI align[= value ]
> +This is used to specify that inode allocation is or is not aligned. The
> +.I value
> +is either 0 or 1, with 1 signifying that inodes are allocated aligned.
> +If the
> +.I value
> +is omitted, 1 is assumed. The default is that inodes are aligned.
> +Aligned inode access is normally more efficient than unaligned access;
> +alignment must be established at the time the filesystem is created,
> +since inodes are allocated at that time.
> +This option can be used to turn off inode alignment when the
> +filesystem needs to be mountable by a version of IRIX
> +that does not have the inode alignment feature
> +(any release of IRIX before 6.2, and IRIX 6.2 without XFS patches).
> +.TP
> +.BI attr= value
> +This is used to specify the version of extended attribute inline
> +allocation policy to be used.  By default, this is 2, which uses an
> +efficient algorithm for managing the available inline inode space
> +between attribute and extent data.
> +.IP
> +The previous version 1, which has fixed regions for attribute and
> +extent data, is kept for backwards compatibility with kernels older
> +than version 2.6.16.
> +.TP
> +.BI projid32bit[= value ]
> +This is used to enable 32bit quota project identifiers. The
> +.I value
> +is either 0 or 1, with 1 signifying that 32bit projid are to be enabled.
> +If the value is omitted, 1 is assumed.  (This default changed
> +in release version 3.2.0.)
> +.TP
> +.BI sparse[= value ]
> +Enable sparse inode chunk allocation. The
> +.I value
> +is either 0 or 1, with 1 signifying that sparse allocation is enabled.
> +If the value is omitted, 1 is assumed. Sparse inode allocation is
> +disabled by default. This feature is only available for filesystems
> +formatted with
> +.B \-m crc=1.
> +.IP
> +When enabled, sparse inode allocation allows the filesystem to allocate
> +smaller than the standard 64-inode chunk when free space is severely
> +limited. This feature is useful for filesystems that might fragment free
> +space over time such that no free extents are large enough to
> +accommodate a chunk of 64 inodes. Without this feature enabled, inode
> +allocations can fail with out of space errors under severe fragmented
> +free space conditions.
> +.RE
> +.TP
> +.BI \-l " log_section_options"
> +These options specify the location, size, and other parameters of the
> +log section of the filesystem. The valid
> +.I log_section_options
> +are:
> +.RS 1.2i
> +.TP
> +.BI agnum= value
> +If the log is internal, allocate it in this AG.
> +.TP
> +.BI internal[= value ]
> +This is used to specify that the log section is a piece of the data
> +section instead of being another device or logical volume. The
> +.I value
> +is either 0 or 1, with 1 signifying that the log is internal. If the
> +.I value
> +is omitted, 1 is assumed.
> +.TP
> +.BI logdev= device
> +This is used to specify that the log section should reside on the
> +.I device
> +separate from the data section. The
> +.B internal=1
> +and
> +.B logdev
> +options are mutually exclusive.
> +.TP
> +.BI size= value
> +This is used to specify the size of the log section.
> +.IP
> +If the log is contained within the data section and
> +.B size
> +isn't specified,
> +.B mkfs.xfs
> +will try to select a suitable log size depending
> +on the size of the filesystem.  The actual logsize depends on the
> +filesystem block size and the directory block size.
> +.IP
> +Otherwise, the
> +.B size
> +suboption is only needed if the log section of the filesystem
> +should occupy less space than the size of the special file. The
> +.I value
> +is specified in bytes or blocks, with a
> +.B b
> +suffix meaning multiplication by the filesystem block size, as
> +described above. The overriding minimum value for size is 512 blocks.
> +With some combinations of filesystem block size, inode size,
> +and directory block size, the minimum log size is larger than 512 blocks.
> +.TP
> +.BI version= value
> +This specifies the version of the log. The current default is 2,
> +which allows for larger log buffer sizes, as well as supporting
> +stripe-aligned log writes (see the sunit and su options, below).
> +.IP
> +The previous version 1, which is limited to 32k log buffers and does
> +not support stripe-aligned writes, is kept for backwards compatibility
> +with very old 2.4 kernels.
> +.TP
> +.BI sunit= value
> +This specifies the alignment to be used for log writes. The
> +.I value
> +has to be specified in 512-byte block units. Use the
> +.B su
> +suboption to specify the log stripe unit size in bytes.
> +Log writes will be aligned on this boundary,
> +and rounded up to this boundary.
> +This gives major improvements in performance on some configurations
> +such as software RAID5 when the
> +.B sunit
> +is specified as the filesystem block size.
> +The equivalent byte value must be a multiple of the filesystem block
> +size. Version 2 logs are automatically selected if the log
> +.B sunit
> +suboption is specified.
> +.IP
> +The
> +.B su
> +suboption is an alternative to using
> +.B sunit.
> +.TP
> +.BI su= value
> +This is used to specify the log stripe. The
> +.I value
> +has to be specified in bytes, (usually using the
> +.BR s " or " b
> +suffixes). This value must be a multiple of the filesystem block size.
> +Version 2 logs are automatically selected if the log
> +.B su
> +suboption is specified.
> +.TP
> +.BI lazy-count= value
> +This changes the method of logging various persistent counters
> +in the superblock.  Under metadata intensive workloads, these
> +counters are updated and logged frequently enough that the superblock
> +updates become a serialization point in the filesystem. The
> +.I value
> +can be either 0 or 1.
> +.IP
> +With
> +.BR lazy-count=1 ,
> +the superblock is not modified or logged on every change of the
> +persistent counters. Instead, enough information is kept in
> +other parts of the filesystem to be able to maintain the persistent
> +counter values without needed to keep them in the superblock.
> +This gives significant improvements in performance on some configurations.
> +The default
> +.I value
> +is 1 (on) so you must specify
> +.B lazy-count=0
> +if you want to disable this feature for older kernels which don't support
> +it.
> +.RE
> +.TP
> +.BI \-n " naming_options"
> +These options specify the version and size parameters for the naming
> +(directory) area of the filesystem. The valid
> +.I naming_options
> +are:
> +.RS 1.2i
> +.TP
> +.BI size= value
> +The directory block size is specified with a
> +.I value
> +in bytes.  The block size must be a power of 2 and cannot be less than the
> +filesystem block size.
> +The default size
> +.I value
> +for version 2 directories is 4096 bytes (4 KiB),
> +unless the filesystem block size is larger than 4096,
> +in which case the default
> +.I value
> +is the filesystem block size.
> +For version 1 directories the block size is the same as the
> +filesystem block size.
> +.TP
> +.BI version= value
> +The naming (directory) version
> +.I value
> +can be either 2 or 'ci', defaulting to 2 if unspecified.
> +With version 2 directories, the directory block size can be
> +any power of 2 size from the filesystem block size up to 65536.
> +.IP
> +The
> +.B version=ci
> +option enables ASCII only case-insensitive filename lookup and version
> +2 directories. Filenames are case-preserving, that is, the names
> +are stored in directories using the case they were created with.
> +.IP
> +Note: Version 1 directories are not supported.
> +.TP
> +.BI ftype= value
> +This feature allows the inode type to be stored in the directory
> +structure so that the
> +.BR readdir (3)
> +and
> +.BR getdents (2)
> +do not need to look up the inode to determine the inode type.
> +
> +The
> +.I value
> +is either 0 or 1, with 1 signifying that filetype information
> +will be stored in the directory structure.  The default value is 1.
> +
> +When CRCs are enabled (the default), the ftype functionality is always
> +enabled, and cannot be turned off.
> +.IP
> +.RE
> +.TP
> +.BI \-p " protofile"
> +If the optional
> +.BI \-p " protofile"
> +argument is given,
> +.B mkfs.xfs
> +uses
> +.I protofile
> +as a prototype file and takes its directions from that file.
> +The blocks and inodes specifiers in the
> +.I protofile
> +are provided for backwards compatibility, but are otherwise unused.
> +The syntax of the protofile is defined by a number of tokens separated
> +by spaces or newlines. Note that the line numbers are not part of the
> +syntax but are meant to help you in the following discussion of the file
> +contents.
> +.nf
> +.sp .8v
> +.in +5
> +\f71       /stand/\f1\f2diskboot\f1\f7
> +2       4872 110
> +3       d\-\-777 3 1
> +4       usr     d\-\-777 3 1
> +5       sh      \-\-\-755 3 1 /bin/sh
> +6       ken     d\-\-755 6 1
> +7               $
> +8       b0      b\-\-644 3 1 0 0
> +9       c0      c\-\-644 3 1 0 0
> +10      fifo    p\-\-644 3 1
> +11      slink   l\-\-644 3 1 /a/symbolic/link
> +12      :  This is a comment line
> +13      $
> +14      $\f1
> +.in -5
> +.fi
> +.IP
> +Line 1 is a dummy string.
> +(It was formerly the bootfilename.)
> +It is present for backward
> +compatibility; boot blocks are not used on SGI systems.
> +.IP
> +Note that some string of characters must be present as the first line of
> +the proto file to cause it to be parsed correctly; the value
> +of this string is immaterial since it is ignored.
> +.IP
> +Line 2 contains two numeric values (formerly the numbers of blocks and inodes).
> +These are also merely for backward compatibility: two numeric values must
> +appear at this point for the proto file to be correctly parsed,
> +but their values are immaterial since they are ignored.
> +.IP
> +The lines 3 through 11 specify the files and directories you want to
> +include in this filesystem. Line 3 defines the
> +root directory. Other directories and
> +files that you want in the filesystem
> +are indicated by lines 4 through 6 and
> +lines 8 through 10. Line 11 contains
> +symbolic link syntax.
> +.IP
> +Notice the dollar sign
> +.RB ( $ )
> +syntax on line 7. This syntax directs the
> +.B mkfs.xfs
> +command to terminate the branch of the filesystem it
> +is currently on and then continue
> +from the directory specified by
> +the next line, in this case line 8.
> +It must be the last character
> +on a line.
> +The colon
> +on line 12 introduces a comment; all characters up until the
> +following newline are ignored.
> +Note that this means you cannot
> +have a file in a prototype file whose name contains a colon.
> +The
> +.B $
> +on lines 13 and 14 end the process, since no additional
> +specifications follow.
> +.IP
> +File specifications provide the following:
> +.IP
> +  * file mode
> +.br
> +  * user ID
> +.br
> +  * group ID
> +.br
> +  * the file's beginning contents
> +.P
> +.IP
> +A 6-character string defines the mode for
> +a file. The first character of this string
> +defines the file type. The character range
> +for this first character is
> +.B \-bcdpl.
> +A file may be a regular file, a block special file,
> +a character special file, directory files, named
> +pipes (first-in, first out files), and symbolic
> +links.
> +The second character of the mode string is
> +used to specify setuserID mode, in which case
> +it is
> +.BR u .
> +If setuserID mode is not specified, the second character is
> +.BR \- .
> +The third character of the mode string is
> +used to specify the setgroupID mode, in which
> +case it is
> +.BR g .
> +If setgroupID mode is not specified, the third character is
> +.BR \- .
> +The remaining characters of the mode string are
> +a three digit octal number. This octal number
> +defines the owner, group, and other read, write,
> +and execute permissions for the file, respectively.
> +For more information on file permissions, see the
> +.BR chmod (1)
> +command.
> +.IP
> +Following the mode character string are two
> +decimal number tokens that specify the user and group IDs
> +of the file's owner.
> +.IP
> +In a regular file, the next token specifies the
> +pathname from which the contents and size of the
> +file are copied.
> +In a block or character special file, the next token
> +are two decimal numbers that specify the major and minor
> +device numbers.
> +When a file is a symbolic link, the next token
> +specifies the contents of the link.
> +
> +When the file is a directory, the
> +.B mkfs.xfs
> +command creates the entries
> +.B dot
> +(.) and
> +.B dot-dot
> +(..) and then reads the list of names and file specifications
> +in a recursive manner for all of the entries
> +in the directory. A scan of the protofile is
> +always terminated with the dollar (
> +.B $
> +) token.
> +.TP
> +.B \-q
> +Quiet option. Normally
> +.B mkfs.xfs
> +prints the parameters of the filesystem
> +to be constructed;
> +the
> +.B \-q
> +flag suppresses this.
> +.TP
> +.BI \-r " realtime_section_options"
> +These options specify the location, size, and other parameters of the
> +real-time section of the filesystem. The valid
> +.I realtime_section_options
> +are:
> +.RS 1.2i
> +.TP
> +.BI rtdev= device
> +This is used to specify the
> +.I device
> +which should contain the real-time section of the filesystem.
> +The suboption value is the name of a block device.
> +.TP
> +.BI extsize= value
> +This is used to specify the size of the blocks in the real-time
> +section of the filesystem. This
> +.I value
> +must be a multiple of the filesystem block size. The minimum allowed
> +size is the filesystem block size or 4 KiB (whichever is larger); the
> +default size is the stripe width for striped volumes or 64 KiB for
> +non-striped volumes; the maximum allowed size is 1 GiB. The real-time
> +extent size should be carefully chosen to match the parameters of the
> +physical media used.
> +.TP
> +.BI size= value
> +This is used to specify the size of the real-time section.
> +This suboption is only needed if the real-time section of the
> +filesystem should occupy less space than the size of the partition
> +or logical volume containing the section.
> +.TP
> +.BI noalign
> +This option disables stripe size detection, enforcing a realtime device with no
> +stripe geometry.
> +.RE
> +.TP
> +.BI \-s " sector_size_options"
> +This option specifies the fundamental sector size of the filesystem.
> +The valid
> +.I sector_size_option
> +is:
> +.RS 1.2i
> +.TP
> +.BI size= value
> +The sector size is specified with a
> +.I value
> +in bytes.  The default
> +.I sector_size
> +is 512 bytes. The minimum value for sector size is
> +512; the maximum is 32768 (32 KiB). The
> +.I sector_size
> +must be a power of 2 size and cannot be made larger than the
> +filesystem block size.
> +.IP
> +To specify any options on the command line in units of sectors, this
> +option must be specified first so that the sector size is
> +applied consistently to all options.
> +.RE
> +.TP
> +.BI \-L " label"
> +Set the filesystem
> +.IR label .
> +XFS filesystem labels can be at most 12 characters long; if
> +.I label
> +is longer than 12 characters,
> +.B mkfs.xfs
> +will not proceed with creating the filesystem.  Refer to the
> +.BR mount "(8) and " xfs_admin (8)
> +manual entries for additional information.
> +.TP
> +.B \-N
> +Causes the file system parameters to be printed out without really
> +creating the file system.
> +.TP
> +.B \-K
> +Do not attempt to discard blocks at mkfs time.
> +.TP
> +.B \-V
> +Prints the version number and exits.
> +.SH CONFIGURATION FILE FORMAT
> +The optional default configuration file in
> +.B @sysconfdir@/xfs/mkfs/default
> +as well as any alternate configuration file specified via the
> +.B \-c
> +option must follow a simple ini-style format as shown below.
> +Available options consist of a subset of the parameters available
> +via the
> +.BR mkfs.xfs (8)
> +command line.
> +Currently all default parameters can only be either enabled or disabled,
> +with a value of 1 to enable or 0 to disable.
> +See below for a list of all supported configuration parameters and their
> +current built-in default settings.
> +.PP
> +.BI [data]
> +.br
> +.BI noalign=0
> +.PP
> +.BI [inode]
> +.br
> +.BI align=1
> +.br
> +.BI projid32bit=1
> +.br
> +.BI sparse=0
> +.PP
> +.BI [log]
> +.br
> +.BI lazy-count=1
> +.PP
> +.BI [metadata]
> +.br
> +.BI crc=1
> +.br
> +.BI finobt=1
> +.br
> +.BI rmapbt=0
> +.br
> +.BI reflink=0
> +.PP
> +.BI [naming]
> +.br
> +.BI ftype=1
> +.PP
> +.BI [rtdev]
> +.br
> +.BI noalign=0
> +.PP
> +.SH SEE ALSO
> +.BR xfs (5),
> +.BR mkfs (8),
> +.BR mount (8),
> +.BR xfs_info (8),
> +.BR xfs_admin (8).
> +.SH BUGS
> +With a prototype file, it is not possible to specify hard links.
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch
diff mbox

diff --git a/man/man8/Makefile b/man/man8/Makefile
index 36620da..08e5e0d 100644
--- a/man/man8/Makefile
+++ b/man/man8/Makefile
@@ -7,14 +7,20 @@  include $(TOPDIR)/include/builddefs
  
  MAN_SECTION	= 8
  
-MAN_PAGES	= $(shell echo *.$(MAN_SECTION))
+MAN_PAGES	= $(shell echo *.$(MAN_SECTION)) mkfs.xfs.8
  MAN_DEST	= $(PKG_MAN_DIR)/man$(MAN_SECTION)
  LSRCFILES	= $(MAN_PAGES)
  
  default : $(MAN_PAGES)
  
+LDIRT		= mkfs.xfs.8
+
  include $(BUILDRULES)
  
+mkfs.xfs.8: mkfs.xfs.8.in
+	@echo "    [SED]    $@"
+	$(Q)$(SED) -e "s|@sysconfdir@|$(PKG_ETC_DIR)|g" < $< > $@
+
  install : default
  	$(INSTALL) -m 755 -d $(MAN_DEST)
  	$(INSTALL_MAN)
diff --git a/man/man8/mkfs.xfs.8 b/man/man8/mkfs.xfs.8
deleted file mode 100644
index ca8c775..0000000
--- a/man/man8/mkfs.xfs.8
+++ /dev/null
@@ -1,1016 +0,0 @@ 
-.TH mkfs.xfs 8
-.SH NAME
-mkfs.xfs \- construct an XFS filesystem
-.SH SYNOPSIS
-.B mkfs.xfs
-[
-.B \-c
-.I configuration
-] [
-[
-.B \-b
-.I block_size_options
-] [
-.B \-m
-.I global_metadata_options
-] [
-.B \-d
-.I data_section_options
-] [
-.B \-f
-] [
-.B \-i
-.I inode_options
-] [
-.B \-l
-.I log_section_options
-] [
-.B \-n
-.I naming_options
-] [
-.B \-p
-.I protofile
-] [
-.B \-q
-] [
-.B \-r
-.I realtime_section_options
-] [
-.B \-s
-.I sector_size_options
-] [
-.B \-L
-.I label
-] [
-.B \-N
-] [
-.B \-K
-]
-.I device
-.br
-.B mkfs.xfs \-V
-.SH DESCRIPTION
-.B mkfs.xfs
-constructs an XFS filesystem by writing on a special
-file using the values found in the arguments of the command line.
-It is invoked automatically by
-.BR mkfs (8)
-when it is given the
-.B \-t xfs
-option.
-.PP
-In its simplest (and most commonly used form), the size of the
-filesystem is determined from the disk driver.  As an example, to make
-a filesystem with an internal log on the first partition on the first
-SCSI disk, use:
-.IP
-.B mkfs.xfs /dev/sda1
-.PP
-The metadata log can be placed on another device to reduce the number
-of disk seeks.  To create a filesystem on the first partition on the
-first SCSI disk with a 10MiB log located on the first partition
-on the second SCSI disk, use:
-.RS
-.HP
-.B mkfs.xfs\ \-l\ logdev=/dev/sdb1,size=10m /dev/sda1
-.RE
-.PP
-Each of the
-.I option
-elements in the argument list above can be given as multiple comma-separated
-suboptions if multiple suboptions apply to the same option.
-Equivalently, each main option can be given multiple times with
-different suboptions.
-For example,
-.B \-l internal,size=10m
-and
-.B \-l internal \-l size=10m
-are equivalent.
-.PP
-In the descriptions below, sizes are given in sectors, bytes, blocks,
-kilobytes, megabytes, gigabytes, etc.
-Sizes are treated as hexadecimal if prefixed by 0x or 0X,
-octal if prefixed by 0, or decimal otherwise.
-The following lists possible multiplication suffixes:
-.RS
-.PD 0
-.HP
-.BR s "\ \-\ multiply by sector size (default = 512, see " \-s
-option below).
-.HP
-.BR b "\ \-\ multiply by filesystem block size (default = 4K, see " \-b
-option below).
-.HP
-.BR k "\ \-\ multiply by one kilobyte (1,024 bytes)."
-.HP
-.BR m "\ \-\ multiply by one megabyte (1,048,576 bytes)."
-.HP
-.BR g "\ \-\ multiply by one gigabyte (1,073,741,824 bytes)."
-.HP
-.BR t "\ \-\ multiply by one terabyte (1,099,511,627,776 bytes)."
-.HP
-.BR p "\ \-\ multiply by one petabyte (1,024 terabytes)."
-.HP
-.BR e "\ \-\ multiply by one exabyte (1,048,576 terabytes)."
-.PD
-.RE
-.PP
-When specifying parameters in units of sectors or filesystem blocks, the
-.B \-s
-option or the
-.B \-b
-option first needs to be added to the command line.
-Failure to specify the size of the units will result in illegal value errors
-when parameters are quantified in those units.
-.PP
-Many feature options allow an optional argument of 0 or 1, to explicitly
-disable or enable the functionality.
-.SH DEFAULT VALUES
-.BR mkfs.xfs (8)
-contains built-in default values for every option as described in the sections
-below.
-These built-in defaults may evolve over time as new capabilities are added.
-If the file
-.B /etc/xfs/mkfs/default
-exists, it will be parsed to override built-in defaults, and the defaults
-described in sections below may no longer apply.
-.PP
-The
-.B \-c
-option may also be used to specify an alternate configuration file
-as described in the OPTIONS section.
-.SH OPTIONS
-.TP
-.BI \-c " configuration"
-This option may be used to specify a configuration file other than
-.B /etc/xfs/mkfs/default
-to override selected built-in parameter defaults.
-If
-.B configuration
-is a simple filename with no path components, it will be searched in the
-.B /etc/xfs/mkfs/
-directory.
-If
-.B configuration
-is an absolute pathname, that path will be used to find the configuration file.
-Otherwise, if
-.B configuration
-begins with
-.BR \'./\' " or " \'../\'
-it will be treated as a pathname relative to the current working directory.
-See also the CONFIGURATION FILE FORMAT section below.
-.TP
-.BI \-b " block_size_options"
-This option specifies the fundamental block size of the filesystem.
-The valid
-.I block_size_option
-is:
-.RS 1.2i
-.TP
-.BI size= value
-The filesystem block size is specified with a
-.I value
-in bytes. The default value is 4096 bytes (4 KiB), the minimum is 512, and the
-maximum is 65536 (64 KiB).
-.IP
-To specify any options on the command line in units of filesystem blocks, this
-option must be specified first so that the filesystem block size is
-applied consistently to all options.
-.IP
-Although
-.B mkfs.xfs
-will accept any of these values and create a valid filesystem,
-XFS on Linux can only mount filesystems with pagesize or smaller blocks.
-.RE
-.TP
-.BI \-m " global_metadata_options"
-These options specify metadata format options that either apply to the entire
-filesystem or aren't easily characterised by a specific functionality group. The
-valid
-.I global_metadata_options
-are:
-.RS 1.2i
-.TP
-.BI crc= value
-This is used to create a filesystem which maintains and checks CRC information
-in all metadata objects on disk. The value is either 0 to disable the feature,
-or 1 to enable the use of CRCs.
-.IP
-CRCs enable enhanced error detection due to hardware issues, whilst the format
-changes also improves crash recovery algorithms and the ability of various tools
-to validate and repair metadata corruptions when they are found.  The CRC
-algorithm used is CRC32c, so the overhead is dependent on CPU architecture as
-some CPUs have hardware acceleration of this algorithm.  Typically the overhead
-of calculating and checking the CRCs is not noticeable in normal operation.
-.IP
-By default,
-.B mkfs.xfs
-will enable metadata CRCs.
-.TP
-.BI finobt= value
-This option enables the use of a separate free inode btree index in each
-allocation group. The value is either 0 to disable the feature, or 1 to create
-a free inode btree in each allocation group.
-.IP
-The free inode btree mirrors the existing allocated inode btree index which
-indexes both used and free inodes. The free inode btree does not index used
-inodes, allowing faster, more consistent inode allocation performance as
-filesystems age.
-.IP
-By default,
-.B mkfs.xfs
-will create free inode btrees for filesystems created with the (default)
-.B \-m crc=1
-option set. When the option
-.B \-m crc=0
-is used, the free inode btree feature is not supported and is disabled.
-.TP
-.BI uuid= value
-Use the given value as the filesystem UUID for the newly created filesystem.
-The default is to generate a random UUID.
-.TP
-.BI rmapbt= value
-This option enables the creation of a reverse-mapping btree index in each
-allocation group.  The value is either 0 to disable the feature, or 1 to
-create the btree.
-.IP
-The reverse mapping btree maps filesystem blocks to the owner of the
-filesystem block.  Most of the mappings will be to an inode number and an
-offset, though there will also be mappings to filesystem metadata.  This
-secondary metadata can be used to validate the primary metadata or to
-pinpoint exactly which data has been lost when a disk error occurs.
-.IP
-By default,
-.B mkfs.xfs
-will not create reverse mapping btrees.  This feature is only available
-for filesystems created with the (default)
-.B \-m crc=1
-option set. When the option
-.B \-m crc=0
-is used, the reverse mapping btree feature is not supported and is disabled.
-.TP
-.BI reflink= value
-This option enables the use of a separate reference count btree index in each
-allocation group. The value is either 0 to disable the feature, or 1 to create
-a reference count btree in each allocation group.
-.IP
-The reference count btree enables the sharing of physical extents between
-the data forks of different files, which is commonly known as "reflink".
-Unlike traditional Unix filesystems which assume that every inode and
-logical block pair map to a unique physical block, a reflink-capable
-XFS filesystem removes the uniqueness requirement, allowing up to four
-billion arbitrary inode/logical block pairs to map to a physical block.
-If a program tries to write to a multiply-referenced block in a file, the write
-will be redirected to a new block, and that file's logical-to-physical
-mapping will be changed to the new block ("copy on write").  This feature
-enables the creation of per-file snapshots and deduplication.  It is only
-available for the data forks of regular files.
-.IP
-By default,
-.B mkfs.xfs
-will not create reference count btrees and therefore will not enable the
-reflink feature.  This feature is only available for filesystems created with
-the (default)
-.B \-m crc=1
-option set. When the option
-.B \-m crc=0
-is used, the reference count btree feature is not supported and reflink is
-disabled.
-.RE
-.TP
-.BI \-d " data_section_options"
-These options specify the location, size, and other parameters of the
-data section of the filesystem. The valid
-.I data_section_options
-are:
-.RS 1.2i
-.TP
-.BI agcount= value
-This is used to specify the number of allocation groups. The data section
-of the filesystem is divided into allocation groups to improve the
-performance of XFS. More allocation groups imply that more parallelism
-can be achieved when allocating blocks and inodes. The minimum
-allocation group size is 16 MiB; the maximum size is just under 1 TiB.
-The data section of the filesystem is divided into
-.I value
-allocation groups (default value is scaled automatically based
-on the underlying device size).
-.TP
-.BI agsize= value
-This is an alternative to using the
-.B agcount
-suboption. The
-.I value
-is the desired size of the allocation group expressed in bytes
-(usually using the
-.BR m " or " g
-suffixes).
-This value must be a multiple of the filesystem block size, and
-must be at least 16MiB, and no more than 1TiB, and may
-be automatically adjusted to properly align with the stripe geometry.
-The
-.B agcount
-and
-.B agsize
-suboptions are mutually exclusive.
-.TP
-.BI cowextsize= value
-Set the copy-on-write extent size hint on all inodes created by
-.BR mkfs.xfs "."
-The value must be provided in units of filesystem blocks.
-If the value is zero, the default value (currently 32 blocks) will be used.
-Directories will pass on this hint to newly created children.
-.TP
-.BI name= value
-This can be used to specify the name of the special file containing
-the filesystem. In this case, the log section must be specified as
-.B internal
-(with a size, see the
-.B \-l
-option below) and there can be no real-time section.
-.TP
-.BI file[= value ]
-This is used to specify that the file given by the
-.B name
-suboption is a regular file. The
-.I value
-is either 0 or 1, with 1 signifying that the file is regular. This
-suboption is used only to make a filesystem image. If the
-.I value
-is omitted then 1 is assumed.
-.TP
-.BI size= value
-This is used to specify the size of the data section. This suboption
-is required if
-.B \-d file[=1]
-is given. Otherwise, it is only needed if the filesystem should occupy
-less space than the size of the special file.
-.TP
-.BI sunit= value
-This is used to specify the stripe unit for a RAID device or a
-logical volume. The
-.I value
-has to be specified in 512-byte block units. Use the
-.B su
-suboption to specify the stripe unit size in bytes. This suboption
-ensures that data allocations will be stripe unit aligned when the
-current end of file is being extended and the file size is larger
-than 512KiB. Also inode allocations and the internal log will be
-stripe unit aligned.
-.TP
-.BI su= value
-This is an alternative to using
-.B sunit.
-The
-.B su
-suboption is used to specify the stripe unit for a RAID device or a
-striped logical volume. The
-.I value
-has to be specified in bytes, (usually using the
-.BR m " or " g
-suffixes). This
-.I value
-must be a multiple of the filesystem block size.
-.TP
-.BI swidth= value
-This is used to specify the stripe width for a RAID device or a
-striped logical volume. The
-.I value
-has to be specified in 512-byte block units. Use the
-.B sw
-suboption to specify the stripe width size in bytes.
-This suboption is required if
-.B \-d sunit
-has been specified and it has to be a multiple of the
-.B \-d sunit
-suboption.
-.TP
-.BI sw= value
-suboption is an alternative to using
-.B swidth.
-The
-.B sw
-suboption is used to specify the stripe width for a RAID device or
-striped logical volume. The
-.I value
-is expressed as a multiplier of the stripe unit,
-usually the same as the number of stripe members in the logical
-volume configuration, or data disks in a RAID device.
-.IP
-When a filesystem is created on a logical volume device,
-.B mkfs.xfs
-will automatically query the logical volume for appropriate
-.B sunit
-and
-.B swidth
-values.
-.TP
-.BI noalign
-This option disables automatic geometry detection and creates the filesystem
-without stripe geometry alignment even if the underlying storage device provides
-this information.
-.TP
-.BI rtinherit= value
-If set, all inodes created by
-.B mkfs.xfs
-will be created with the realtime flag set.
-Directories will pass on this flag to newly created children.
-.TP
-.BI projinherit= value
-All inodes created by
-.B mkfs.xfs
-will be assigned this project quota id.
-Directories will pass on the project id to newly created children.
-.TP
-.BI extszinherit= value
-All inodes created by
-.B mkfs.xfs
-will have this extent size hint applied.
-The value must be provided in units of filesystem blocks.
-Directories will pass on this hint to newly created children.
-.RE
-.TP
-.B \-f
-Force overwrite when an existing filesystem is detected on the device.
-By default,
-.B mkfs.xfs
-will not write to the device if it suspects that there is a filesystem
-or partition table on the device already.
-.TP
-.BI \-i " inode_options"
-This option specifies the inode size of the filesystem, and other
-inode allocation parameters.
-The XFS inode contains a fixed-size part and a variable-size part.
-The variable-size part, whose size is affected by this option, can contain:
-directory data, for small directories;
-attribute data, for small attribute sets;
-symbolic link data, for small symbolic links;
-the extent list for the file, for files with a small number of extents;
-and the root of a tree describing the location of extents for the file,
-for files with a large number of extents.
-.IP
-The valid
-.I inode_options
-are:
-.RS 1.2i
-.TP
-.BI size= value " | perblock=" value
-The inode size is specified either as a
-.I value
-in bytes with
-.BR size=
-or as the number fitting in a filesystem block with
-.BR perblock= .
-The minimum (and default)
-.I value
-is 256 bytes without crc, 512 bytes with crc enabled.
-The maximum
-.I value
-is 2048 (2 KiB) subject to the restriction that
-the inode size cannot exceed one half of the filesystem block size.
-.IP
-XFS uses 64-bit inode numbers internally; however, the number of
-significant bits in an inode number
-is affected by filesystem geometry.  In
-practice, filesystem size and inode size are the predominant factors.
-The Linux kernel (on 32 bit hardware platforms) and most applications
-cannot currently handle inode numbers greater than 32 significant bits,
-so if no inode size is given on the command line,
-.B mkfs.xfs
-will attempt to choose a size
-such that inode numbers will be < 32 bits.  If an inode size
-is specified, or if a filesystem is sufficiently large,
-.B mkfs.xfs
-will warn if this will create inode numbers > 32 significant
-bits.
-.TP
-.BI maxpct= value
-This specifies the maximum percentage of space in the filesystem that
-can be allocated to inodes. The default
-.I value
-is 25% for filesystems under 1TB, 5% for filesystems under 50TB and 1%
-for filesystems over 50TB.
-.IP
-In the default inode allocation mode, inode blocks are chosen such
-that inode numbers will not exceed 32 bits, which restricts the inode
-blocks to the lower portion of the filesystem. The data block
-allocator will avoid these low blocks to accommodate the specified
-maxpct, so a high value may result in a filesystem with nothing but
-inodes in a significant portion of the lower blocks of the filesystem.
-(This restriction is not present when the filesystem is mounted with
-the
-.I "inode64"
-option on 64-bit platforms).
-.IP
-Setting the value to 0 means that essentially all of the filesystem
-can become inode blocks, subject to inode32 restrictions.
-.IP
-This value can be modified with
-.IR xfs_growfs(8) .
-.TP
-.BI align[= value ]
-This is used to specify that inode allocation is or is not aligned. The
-.I value
-is either 0 or 1, with 1 signifying that inodes are allocated aligned.
-If the
-.I value
-is omitted, 1 is assumed. The default is that inodes are aligned.
-Aligned inode access is normally more efficient than unaligned access;
-alignment must be established at the time the filesystem is created,
-since inodes are allocated at that time.
-This option can be used to turn off inode alignment when the
-filesystem needs to be mountable by a version of IRIX
-that does not have the inode alignment feature
-(any release of IRIX before 6.2, and IRIX 6.2 without XFS patches).
-.TP
-.BI attr= value
-This is used to specify the version of extended attribute inline
-allocation policy to be used.  By default, this is 2, which uses an
-efficient algorithm for managing the available inline inode space
-between attribute and extent data.
-.IP
-The previous version 1, which has fixed regions for attribute and
-extent data, is kept for backwards compatibility with kernels older
-than version 2.6.16.
-.TP
-.BI projid32bit[= value ]
-This is used to enable 32bit quota project identifiers. The
-.I value
-is either 0 or 1, with 1 signifying that 32bit projid are to be enabled.
-If the value is omitted, 1 is assumed.  (This default changed
-in release version 3.2.0.)
-.TP
-.BI sparse[= value ]
-Enable sparse inode chunk allocation. The
-.I value
-is either 0 or 1, with 1 signifying that sparse allocation is enabled.
-If the value is omitted, 1 is assumed. Sparse inode allocation is
-disabled by default. This feature is only available for filesystems
-formatted with
-.B \-m crc=1.
-.IP
-When enabled, sparse inode allocation allows the filesystem to allocate
-smaller than the standard 64-inode chunk when free space is severely
-limited. This feature is useful for filesystems that might fragment free
-space over time such that no free extents are large enough to
-accommodate a chunk of 64 inodes. Without this feature enabled, inode
-allocations can fail with out of space errors under severe fragmented
-free space conditions.
-.RE
-.TP
-.BI \-l " log_section_options"
-These options specify the location, size, and other parameters of the
-log section of the filesystem. The valid
-.I log_section_options
-are:
-.RS 1.2i
-.TP
-.BI agnum= value
-If the log is internal, allocate it in this AG.
-.TP
-.BI internal[= value ]
-This is used to specify that the log section is a piece of the data
-section instead of being another device or logical volume. The
-.I value
-is either 0 or 1, with 1 signifying that the log is internal. If the
-.I value
-is omitted, 1 is assumed.
-.TP
-.BI logdev= device
-This is used to specify that the log section should reside on the
-.I device
-separate from the data section. The
-.B internal=1
-and
-.B logdev
-options are mutually exclusive.
-.TP
-.BI size= value
-This is used to specify the size of the log section.
-.IP
-If the log is contained within the data section and
-.B size
-isn't specified,
-.B mkfs.xfs
-will try to select a suitable log size depending
-on the size of the filesystem.  The actual logsize depends on the
-filesystem block size and the directory block size.
-.IP
-Otherwise, the
-.B size
-suboption is only needed if the log section of the filesystem
-should occupy less space than the size of the special file. The
-.I value
-is specified in bytes or blocks, with a
-.B b
-suffix meaning multiplication by the filesystem block size, as
-described above. The overriding minimum value for size is 512 blocks.
-With some combinations of filesystem block size, inode size,
-and directory block size, the minimum log size is larger than 512 blocks.
-.TP
-.BI version= value
-This specifies the version of the log. The current default is 2,
-which allows for larger log buffer sizes, as well as supporting
-stripe-aligned log writes (see the sunit and su options, below).
-.IP
-The previous version 1, which is limited to 32k log buffers and does
-not support stripe-aligned writes, is kept for backwards compatibility
-with very old 2.4 kernels.
-.TP
-.BI sunit= value
-This specifies the alignment to be used for log writes. The
-.I value
-has to be specified in 512-byte block units. Use the
-.B su
-suboption to specify the log stripe unit size in bytes.
-Log writes will be aligned on this boundary,
-and rounded up to this boundary.
-This gives major improvements in performance on some configurations
-such as software RAID5 when the
-.B sunit
-is specified as the filesystem block size.
-The equivalent byte value must be a multiple of the filesystem block
-size. Version 2 logs are automatically selected if the log
-.B sunit
-suboption is specified.
-.IP
-The
-.B su
-suboption is an alternative to using
-.B sunit.
-.TP
-.BI su= value
-This is used to specify the log stripe. The
-.I value
-has to be specified in bytes, (usually using the
-.BR s " or " b
-suffixes). This value must be a multiple of the filesystem block size.
-Version 2 logs are automatically selected if the log
-.B su
-suboption is specified.
-.TP
-.BI lazy-count= value
-This changes the method of logging various persistent counters
-in the superblock.  Under metadata intensive workloads, these
-counters are updated and logged frequently enough that the superblock
-updates become a serialization point in the filesystem. The
-.I value
-can be either 0 or 1.
-.IP
-With
-.BR lazy-count=1 ,
-the superblock is not modified or logged on every change of the
-persistent counters. Instead, enough information is kept in
-other parts of the filesystem to be able to maintain the persistent
-counter values without needed to keep them in the superblock.
-This gives significant improvements in performance on some configurations.
-The default
-.I value
-is 1 (on) so you must specify
-.B lazy-count=0
-if you want to disable this feature for older kernels which don't support
-it.
-.RE
-.TP
-.BI \-n " naming_options"
-These options specify the version and size parameters for the naming
-(directory) area of the filesystem. The valid
-.I naming_options
-are:
-.RS 1.2i
-.TP
-.BI size= value
-The directory block size is specified with a
-.I value
-in bytes.  The block size must be a power of 2 and cannot be less than the
-filesystem block size.
-The default size
-.I value
-for version 2 directories is 4096 bytes (4 KiB),
-unless the filesystem block size is larger than 4096,
-in which case the default
-.I value
-is the filesystem block size.
-For version 1 directories the block size is the same as the
-filesystem block size.
-.TP
-.BI version= value
-The naming (directory) version
-.I value
-can be either 2 or 'ci', defaulting to 2 if unspecified.
-With version 2 directories, the directory block size can be
-any power of 2 size from the filesystem block size up to 65536.
-.IP
-The
-.B version=ci
-option enables ASCII only case-insensitive filename lookup and version
-2 directories. Filenames are case-preserving, that is, the names
-are stored in directories using the case they were created with.
-.IP
-Note: Version 1 directories are not supported.
-.TP
-.BI ftype= value
-This feature allows the inode type to be stored in the directory
-structure so that the
-.BR readdir (3)
-and
-.BR getdents (2)
-do not need to look up the inode to determine the inode type.
-
-The
-.I value
-is either 0 or 1, with 1 signifying that filetype information
-will be stored in the directory structure.  The default value is 1.
-
-When CRCs are enabled (the default), the ftype functionality is always
-enabled, and cannot be turned off.
-.IP
-.RE
-.TP
-.BI \-p " protofile"
-If the optional
-.BI \-p " protofile"
-argument is given,
-.B mkfs.xfs
-uses
-.I protofile
-as a prototype file and takes its directions from that file.
-The blocks and inodes specifiers in the
-.I protofile
-are provided for backwards compatibility, but are otherwise unused.
-The syntax of the protofile is defined by a number of tokens separated
-by spaces or newlines. Note that the line numbers are not part of the
-syntax but are meant to help you in the following discussion of the file
-contents.
-.nf
-.sp .8v
-.in +5
-\f71       /stand/\f1\f2diskboot\f1\f7
-2       4872 110
-3       d\-\-777 3 1
-4       usr     d\-\-777 3 1
-5       sh      \-\-\-755 3 1 /bin/sh
-6       ken     d\-\-755 6 1
-7               $
-8       b0      b\-\-644 3 1 0 0
-9       c0      c\-\-644 3 1 0 0
-10      fifo    p\-\-644 3 1
-11      slink   l\-\-644 3 1 /a/symbolic/link
-12      :  This is a comment line
-13      $
-14      $\f1
-.in -5
-.fi
-.IP
-Line 1 is a dummy string.
-(It was formerly the bootfilename.)
-It is present for backward
-compatibility; boot blocks are not used on SGI systems.
-.IP
-Note that some string of characters must be present as the first line of
-the proto file to cause it to be parsed correctly; the value
-of this string is immaterial since it is ignored.
-.IP
-Line 2 contains two numeric values (formerly the numbers of blocks and inodes).
-These are also merely for backward compatibility: two numeric values must
-appear at this point for the proto file to be correctly parsed,
-but their values are immaterial since they are ignored.
-.IP
-The lines 3 through 11 specify the files and directories you want to
-include in this filesystem. Line 3 defines the
-root directory. Other directories and
-files that you want in the filesystem
-are indicated by lines 4 through 6 and
-lines 8 through 10. Line 11 contains
-symbolic link syntax.
-.IP
-Notice the dollar sign
-.RB ( $ )
-syntax on line 7. This syntax directs the
-.B mkfs.xfs
-command to terminate the branch of the filesystem it
-is currently on and then continue
-from the directory specified by
-the next line, in this case line 8.
-It must be the last character
-on a line.
-The colon
-on line 12 introduces a comment; all characters up until the
-following newline are ignored.
-Note that this means you cannot
-have a file in a prototype file whose name contains a colon.
-The
-.B $
-on lines 13 and 14 end the process, since no additional
-specifications follow.
-.IP
-File specifications provide the following:
-.IP
-  * file mode
-.br
-  * user ID
-.br
-  * group ID
-.br
-  * the file's beginning contents
-.P
-.IP
-A 6-character string defines the mode for
-a file. The first character of this string
-defines the file type. The character range
-for this first character is
-.B \-bcdpl.
-A file may be a regular file, a block special file,
-a character special file, directory files, named
-pipes (first-in, first out files), and symbolic
-links.
-The second character of the mode string is
-used to specify setuserID mode, in which case
-it is
-.BR u .
-If setuserID mode is not specified, the second character is
-.BR \- .
-The third character of the mode string is
-used to specify the setgroupID mode, in which
-case it is
-.BR g .
-If setgroupID mode is not specified, the third character is
-.BR \- .
-The remaining characters of the mode string are
-a three digit octal number. This octal number
-defines the owner, group, and other read, write,
-and execute permissions for the file, respectively.
-For more information on file permissions, see the
-.BR chmod (1)
-command.
-.IP
-Following the mode character string are two
-decimal number tokens that specify the user and group IDs
-of the file's owner.
-.IP
-In a regular file, the next token specifies the
-pathname from which the contents and size of the
-file are copied.
-In a block or character special file, the next token
-are two decimal numbers that specify the major and minor
-device numbers.
-When a file is a symbolic link, the next token
-specifies the contents of the link.
-
-When the file is a directory, the
-.B mkfs.xfs
-command creates the entries
-.B dot
-(.) and
-.B dot-dot
-(..) and then reads the list of names and file specifications
-in a recursive manner for all of the entries
-in the directory. A scan of the protofile is
-always terminated with the dollar (
-.B $
-) token.
-.TP
-.B \-q
-Quiet option. Normally
-.B mkfs.xfs
-prints the parameters of the filesystem
-to be constructed;
-the
-.B \-q
-flag suppresses this.
-.TP
-.BI \-r " realtime_section_options"
-These options specify the location, size, and other parameters of the
-real-time section of the filesystem. The valid
-.I realtime_section_options
-are:
-.RS 1.2i
-.TP
-.BI rtdev= device
-This is used to specify the
-.I device
-which should contain the real-time section of the filesystem.
-The suboption value is the name of a block device.
-.TP
-.BI extsize= value
-This is used to specify the size of the blocks in the real-time
-section of the filesystem. This
-.I value
-must be a multiple of the filesystem block size. The minimum allowed
-size is the filesystem block size or 4 KiB (whichever is larger); the
-default size is the stripe width for striped volumes or 64 KiB for
-non-striped volumes; the maximum allowed size is 1 GiB. The real-time
-extent size should be carefully chosen to match the parameters of the
-physical media used.
-.TP
-.BI size= value
-This is used to specify the size of the real-time section.
-This suboption is only needed if the real-time section of the
-filesystem should occupy less space than the size of the partition
-or logical volume containing the section.
-.TP
-.BI noalign
-This option disables stripe size detection, enforcing a realtime device with no
-stripe geometry.
-.RE
-.TP
-.BI \-s " sector_size_options"
-This option specifies the fundamental sector size of the filesystem.
-The valid
-.I sector_size_option
-is:
-.RS 1.2i
-.TP
-.BI size= value
-The sector size is specified with a
-.I value
-in bytes.  The default
-.I sector_size
-is 512 bytes. The minimum value for sector size is
-512; the maximum is 32768 (32 KiB). The
-.I sector_size
-must be a power of 2 size and cannot be made larger than the
-filesystem block size.
-.IP
-To specify any options on the command line in units of sectors, this
-option must be specified first so that the sector size is
-applied consistently to all options.
-.RE
-.TP
-.BI \-L " label"
-Set the filesystem
-.IR label .
-XFS filesystem labels can be at most 12 characters long; if
-.I label
-is longer than 12 characters,
-.B mkfs.xfs
-will not proceed with creating the filesystem.  Refer to the
-.BR mount "(8) and " xfs_admin (8)
-manual entries for additional information.
-.TP
-.B \-N
-Causes the file system parameters to be printed out without really
-creating the file system.
-.TP
-.B \-K
-Do not attempt to discard blocks at mkfs time.
-.TP
-.B \-V
-Prints the version number and exits.
-.SH CONFIGURATION FILE FORMAT
-The optional default configuration file in
-.B /etc/xfs/mkfs/default
-as well as any alternate configuration file specified via the
-.B \-c
-option must follow a simple ini-style format as shown below.
-Available options consist of a subset of the parameters available
-via the
-.BR mkfs.xfs (8)
-command line.
-Currently all default parameters can only be either enabled or disabled,
-with a value of 1 to enable or 0 to disable.
-See below for a list of all supported configuration parameters and their
-current built-in default settings.
-.PP
-.BI [data]
-.br
-.BI noalign=0
-.PP
-.BI [inode]
-.br
-.BI align=1
-.br
-.BI projid32bit=1
-.br
-.BI sparse=0
-.PP
-.BI [log]
-.br
-.BI lazy-count=1
-.PP
-.BI [metadata]
-.br
-.BI crc=1
-.br
-.BI finobt=1
-.br
-.BI rmapbt=0
-.br
-.BI reflink=0
-.PP
-.BI [naming]
-.br
-.BI ftype=1
-.PP
-.BI [rtdev]
-.br
-.BI noalign=0
-.PP
-.SH SEE ALSO
-.BR xfs (5),
-.BR mkfs (8),
-.BR mount (8),
-.BR xfs_info (8),
-.BR xfs_admin (8).
-.SH BUGS
-With a prototype file, it is not possible to specify hard links.
diff --git a/man/man8/mkfs.xfs.8.in b/man/man8/mkfs.xfs.8.in
new file mode 100644
index 0000000..c91a92d
--- /dev/null
+++ b/man/man8/mkfs.xfs.8.in
@@ -0,0 +1,1016 @@ 
+.TH mkfs.xfs 8
+.SH NAME
+mkfs.xfs \- construct an XFS filesystem
+.SH SYNOPSIS
+.B mkfs.xfs
+[
+.B \-c
+.I configuration
+] [
+[
+.B \-b
+.I block_size_options
+] [
+.B \-m
+.I global_metadata_options
+] [
+.B \-d
+.I data_section_options
+] [
+.B \-f
+] [
+.B \-i
+.I inode_options
+] [
+.B \-l
+.I log_section_options
+] [
+.B \-n
+.I naming_options
+] [
+.B \-p
+.I protofile
+] [
+.B \-q
+] [
+.B \-r
+.I realtime_section_options
+] [
+.B \-s
+.I sector_size_options
+] [
+.B \-L
+.I label
+] [
+.B \-N
+] [
+.B \-K
+]
+.I device
+.br
+.B mkfs.xfs \-V
+.SH DESCRIPTION
+.B mkfs.xfs
+constructs an XFS filesystem by writing on a special
+file using the values found in the arguments of the command line.
+It is invoked automatically by
+.BR mkfs (8)
+when it is given the
+.B \-t xfs
+option.
+.PP
+In its simplest (and most commonly used form), the size of the
+filesystem is determined from the disk driver.  As an example, to make
+a filesystem with an internal log on the first partition on the first
+SCSI disk, use:
+.IP
+.B mkfs.xfs /dev/sda1
+.PP
+The metadata log can be placed on another device to reduce the number
+of disk seeks.  To create a filesystem on the first partition on the
+first SCSI disk with a 10MiB log located on the first partition
+on the second SCSI disk, use:
+.RS
+.HP
+.B mkfs.xfs\ \-l\ logdev=/dev/sdb1,size=10m /dev/sda1
+.RE
+.PP
+Each of the
+.I option
+elements in the argument list above can be given as multiple comma-separated
+suboptions if multiple suboptions apply to the same option.
+Equivalently, each main option can be given multiple times with
+different suboptions.
+For example,
+.B \-l internal,size=10m
+and
+.B \-l internal \-l size=10m
+are equivalent.
+.PP
+In the descriptions below, sizes are given in sectors, bytes, blocks,
+kilobytes, megabytes, gigabytes, etc.
+Sizes are treated as hexadecimal if prefixed by 0x or 0X,
+octal if prefixed by 0, or decimal otherwise.
+The following lists possible multiplication suffixes:
+.RS
+.PD 0
+.HP
+.BR s "\ \-\ multiply by sector size (default = 512, see " \-s
+option below).
+.HP
+.BR b "\ \-\ multiply by filesystem block size (default = 4K, see " \-b
+option below).
+.HP
+.BR k "\ \-\ multiply by one kilobyte (1,024 bytes)."
+.HP
+.BR m "\ \-\ multiply by one megabyte (1,048,576 bytes)."
+.HP
+.BR g "\ \-\ multiply by one gigabyte (1,073,741,824 bytes)."
+.HP
+.BR t "\ \-\ multiply by one terabyte (1,099,511,627,776 bytes)."
+.HP
+.BR p "\ \-\ multiply by one petabyte (1,024 terabytes)."
+.HP
+.BR e "\ \-\ multiply by one exabyte (1,048,576 terabytes)."
+.PD
+.RE
+.PP
+When specifying parameters in units of sectors or filesystem blocks, the
+.B \-s
+option or the
+.B \-b
+option first needs to be added to the command line.
+Failure to specify the size of the units will result in illegal value errors
+when parameters are quantified in those units.
+.PP
+Many feature options allow an optional argument of 0 or 1, to explicitly
+disable or enable the functionality.
+.SH DEFAULT VALUES
+.BR mkfs.xfs (8)
+contains built-in default values for every option as described in the sections
+below.
+These built-in defaults may evolve over time as new capabilities are added.
+If the file
+.B @sysconfdir@/xfs/mkfs/default
+exists, it will be parsed to override built-in defaults, and the defaults
+described in sections below may no longer apply.
+.PP
+The
+.B \-c
+option may also be used to specify an alternate configuration file
+as described in the OPTIONS section.
+.SH OPTIONS
+.TP
+.BI \-c " configuration"
+This option may be used to specify a configuration file other than
+.B @sysconfdir@/xfs/mkfs/default
+to override selected built-in parameter defaults.
+If
+.B configuration
+is a simple filename with no path components, it will be searched in the
+.B @sysconfdir@/xfs/mkfs/
+directory.
+If
+.B configuration
+is an absolute pathname, that path will be used to find the configuration file.
+Otherwise, if
+.B configuration
+begins with
+.BR \'./\' " or " \'../\'
+it will be treated as a pathname relative to the current working directory.
+See also the CONFIGURATION FILE FORMAT section below.
+.TP
+.BI \-b " block_size_options"
+This option specifies the fundamental block size of the filesystem.
+The valid
+.I block_size_option
+is:
+.RS 1.2i
+.TP
+.BI size= value
+The filesystem block size is specified with a
+.I value
+in bytes. The default value is 4096 bytes (4 KiB), the minimum is 512, and the
+maximum is 65536 (64 KiB).
+.IP
+To specify any options on the command line in units of filesystem blocks, this
+option must be specified first so that the filesystem block size is
+applied consistently to all options.
+.IP
+Although
+.B mkfs.xfs
+will accept any of these values and create a valid filesystem,
+XFS on Linux can only mount filesystems with pagesize or smaller blocks.
+.RE
+.TP
+.BI \-m " global_metadata_options"
+These options specify metadata format options that either apply to the entire
+filesystem or aren't easily characterised by a specific functionality group. The
+valid
+.I global_metadata_options
+are:
+.RS 1.2i
+.TP
+.BI crc= value
+This is used to create a filesystem which maintains and checks CRC information
+in all metadata objects on disk. The value is either 0 to disable the feature,
+or 1 to enable the use of CRCs.
+.IP
+CRCs enable enhanced error detection due to hardware issues, whilst the format
+changes also improves crash recovery algorithms and the ability of various tools
+to validate and repair metadata corruptions when they are found.  The CRC
+algorithm used is CRC32c, so the overhead is dependent on CPU architecture as
+some CPUs have hardware acceleration of this algorithm.  Typically the overhead
+of calculating and checking the CRCs is not noticeable in normal operation.
+.IP
+By default,
+.B mkfs.xfs
+will enable metadata CRCs.
+.TP
+.BI finobt= value
+This option enables the use of a separate free inode btree index in each
+allocation group. The value is either 0 to disable the feature, or 1 to create
+a free inode btree in each allocation group.
+.IP
+The free inode btree mirrors the existing allocated inode btree index which
+indexes both used and free inodes. The free inode btree does not index used
+inodes, allowing faster, more consistent inode allocation performance as
+filesystems age.
+.IP
+By default,
+.B mkfs.xfs
+will create free inode btrees for filesystems created with the (default)
+.B \-m crc=1
+option set. When the option
+.B \-m crc=0
+is used, the free inode btree feature is not supported and is disabled.
+.TP
+.BI uuid= value
+Use the given value as the filesystem UUID for the newly created filesystem.
+The default is to generate a random UUID.
+.TP
+.BI rmapbt= value
+This option enables the creation of a reverse-mapping btree index in each
+allocation group.  The value is either 0 to disable the feature, or 1 to
+create the btree.
+.IP
+The reverse mapping btree maps filesystem blocks to the owner of the
+filesystem block.  Most of the mappings will be to an inode number and an
+offset, though there will also be mappings to filesystem metadata.  This
+secondary metadata can be used to validate the primary metadata or to
+pinpoint exactly which data has been lost when a disk error occurs.
+.IP
+By default,
+.B mkfs.xfs
+will not create reverse mapping btrees.  This feature is only available
+for filesystems created with the (default)
+.B \-m crc=1
+option set. When the option
+.B \-m crc=0
+is used, the reverse mapping btree feature is not supported and is disabled.
+.TP
+.BI reflink= value
+This option enables the use of a separate reference count btree index in each
+allocation group. The value is either 0 to disable the feature, or 1 to create
+a reference count btree in each allocation group.
+.IP
+The reference count btree enables the sharing of physical extents between
+the data forks of different files, which is commonly known as "reflink".
+Unlike traditional Unix filesystems which assume that every inode and
+logical block pair map to a unique physical block, a reflink-capable
+XFS filesystem removes the uniqueness requirement, allowing up to four
+billion arbitrary inode/logical block pairs to map to a physical block.
+If a program tries to write to a multiply-referenced block in a file, the write
+will be redirected to a new block, and that file's logical-to-physical
+mapping will be changed to the new block ("copy on write").  This feature
+enables the creation of per-file snapshots and deduplication.  It is only
+available for the data forks of regular files.
+.IP
+By default,
+.B mkfs.xfs
+will not create reference count btrees and therefore will not enable the
+reflink feature.  This feature is only available for filesystems created with
+the (default)
+.B \-m crc=1
+option set. When the option
+.B \-m crc=0
+is used, the reference count btree feature is not supported and reflink is
+disabled.
+.RE
+.TP
+.BI \-d " data_section_options"
+These options specify the location, size, and other parameters of the
+data section of the filesystem. The valid
+.I data_section_options
+are:
+.RS 1.2i
+.TP
+.BI agcount= value
+This is used to specify the number of allocation groups. The data section
+of the filesystem is divided into allocation groups to improve the
+performance of XFS. More allocation groups imply that more parallelism
+can be achieved when allocating blocks and inodes. The minimum
+allocation group size is 16 MiB; the maximum size is just under 1 TiB.
+The data section of the filesystem is divided into
+.I value
+allocation groups (default value is scaled automatically based
+on the underlying device size).
+.TP
+.BI agsize= value
+This is an alternative to using the
+.B agcount
+suboption. The
+.I value
+is the desired size of the allocation group expressed in bytes
+(usually using the
+.BR m " or " g
+suffixes).
+This value must be a multiple of the filesystem block size, and
+must be at least 16MiB, and no more than 1TiB, and may
+be automatically adjusted to properly align with the stripe geometry.
+The
+.B agcount
+and
+.B agsize
+suboptions are mutually exclusive.
+.TP
+.BI cowextsize= value
+Set the copy-on-write extent size hint on all inodes created by
+.BR mkfs.xfs "."
+The value must be provided in units of filesystem blocks.
+If the value is zero, the default value (currently 32 blocks) will be used.
+Directories will pass on this hint to newly created children.
+.TP
+.BI name= value
+This can be used to specify the name of the special file containing
+the filesystem. In this case, the log section must be specified as
+.B internal
+(with a size, see the
+.B \-l
+option below) and there can be no real-time section.
+.TP
+.BI file[= value ]
+This is used to specify that the file given by the
+.B name
+suboption is a regular file. The
+.I value
+is either 0 or 1, with 1 signifying that the file is regular. This
+suboption is used only to make a filesystem image. If the
+.I value
+is omitted then 1 is assumed.
+.TP
+.BI size= value
+This is used to specify the size of the data section. This suboption
+is required if
+.B \-d file[=1]
+is given. Otherwise, it is only needed if the filesystem should occupy
+less space than the size of the special file.
+.TP
+.BI sunit= value
+This is used to specify the stripe unit for a RAID device or a
+logical volume. The
+.I value
+has to be specified in 512-byte block units. Use the
+.B su
+suboption to specify the stripe unit size in bytes. This suboption
+ensures that data allocations will be stripe unit aligned when the
+current end of file is being extended and the file size is larger
+than 512KiB. Also inode allocations and the internal log will be
+stripe unit aligned.
+.TP
+.BI su= value
+This is an alternative to using
+.B sunit.
+The
+.B su
+suboption is used to specify the stripe unit for a RAID device or a
+striped logical volume. The
+.I value
+has to be specified in bytes, (usually using the
+.BR m " or " g
+suffixes). This
+.I value
+must be a multiple of the filesystem block size.
+.TP
+.BI swidth= value
+This is used to specify the stripe width for a RAID device or a
+striped logical volume. The
+.I value
+has to be specified in 512-byte block units. Use the
+.B sw
+suboption to specify the stripe width size in bytes.
+This suboption is required if
+.B \-d sunit
+has been specified and it has to be a multiple of the
+.B \-d sunit
+suboption.
+.TP
+.BI sw= value
+suboption is an alternative to using
+.B swidth.
+The
+.B sw
+suboption is used to specify the stripe width for a RAID device or
+striped logical volume. The
+.I value
+is expressed as a multiplier of the stripe unit,
+usually the same as the number of stripe members in the logical
+volume configuration, or data disks in a RAID device.
+.IP
+When a filesystem is created on a logical volume device,
+.B mkfs.xfs
+will automatically query the logical volume for appropriate
+.B sunit
+and
+.B swidth
+values.
+.TP
+.BI noalign
+This option disables automatic geometry detection and creates the filesystem
+without stripe geometry alignment even if the underlying storage device provides
+this information.
+.TP
+.BI rtinherit= value
+If set, all inodes created by
+.B mkfs.xfs
+will be created with the realtime flag set.
+Directories will pass on this flag to newly created children.
+.TP
+.BI projinherit= value
+All inodes created by
+.B mkfs.xfs
+will be assigned this project quota id.
+Directories will pass on the project id to newly created children.
+.TP
+.BI extszinherit= value
+All inodes created by
+.B mkfs.xfs
+will have this extent size hint applied.
+The value must be provided in units of filesystem blocks.
+Directories will pass on this hint to newly created children.
+.RE
+.TP
+.B \-f
+Force overwrite when an existing filesystem is detected on the device.
+By default,
+.B mkfs.xfs
+will not write to the device if it suspects that there is a filesystem
+or partition table on the device already.
+.TP
+.BI \-i " inode_options"
+This option specifies the inode size of the filesystem, and other
+inode allocation parameters.
+The XFS inode contains a fixed-size part and a variable-size part.
+The variable-size part, whose size is affected by this option, can contain:
+directory data, for small directories;
+attribute data, for small attribute sets;
+symbolic link data, for small symbolic links;
+the extent list for the file, for files with a small number of extents;
+and the root of a tree describing the location of extents for the file,
+for files with a large number of extents.
+.IP
+The valid
+.I inode_options
+are:
+.RS 1.2i
+.TP
+.BI size= value " | perblock=" value
+The inode size is specified either as a
+.I value
+in bytes with
+.BR size=
+or as the number fitting in a filesystem block with
+.BR perblock= .
+The minimum (and default)
+.I value
+is 256 bytes without crc, 512 bytes with crc enabled.
+The maximum
+.I value
+is 2048 (2 KiB) subject to the restriction that
+the inode size cannot exceed one half of the filesystem block size.
+.IP
+XFS uses 64-bit inode numbers internally; however, the number of
+significant bits in an inode number
+is affected by filesystem geometry.  In
+practice, filesystem size and inode size are the predominant factors.
+The Linux kernel (on 32 bit hardware platforms) and most applications
+cannot currently handle inode numbers greater than 32 significant bits,
+so if no inode size is given on the command line,
+.B mkfs.xfs
+will attempt to choose a size
+such that inode numbers will be < 32 bits.  If an inode size
+is specified, or if a filesystem is sufficiently large,
+.B mkfs.xfs
+will warn if this will create inode numbers > 32 significant
+bits.
+.TP
+.BI maxpct= value
+This specifies the maximum percentage of space in the filesystem that
+can be allocated to inodes. The default
+.I value
+is 25% for filesystems under 1TB, 5% for filesystems under 50TB and 1%
+for filesystems over 50TB.
+.IP
+In the default inode allocation mode, inode blocks are chosen such
+that inode numbers will not exceed 32 bits, which restricts the inode
+blocks to the lower portion of the filesystem. The data block
+allocator will avoid these low blocks to accommodate the specified
+maxpct, so a high value may result in a filesystem with nothing but
+inodes in a significant portion of the lower blocks of the filesystem.
+(This restriction is not present when the filesystem is mounted with
+the
+.I "inode64"
+option on 64-bit platforms).
+.IP
+Setting the value to 0 means that essentially all of the filesystem
+can become inode blocks, subject to inode32 restrictions.
+.IP
+This value can be modified with
+.IR xfs_growfs(8) .
+.TP
+.BI align[= value ]
+This is used to specify that inode allocation is or is not aligned. The
+.I value
+is either 0 or 1, with 1 signifying that inodes are allocated aligned.
+If the
+.I value
+is omitted, 1 is assumed. The default is that inodes are aligned.
+Aligned inode access is normally more efficient than unaligned access;
+alignment must be established at the time the filesystem is created,
+since inodes are allocated at that time.
+This option can be used to turn off inode alignment when the
+filesystem needs to be mountable by a version of IRIX
+that does not have the inode alignment feature
+(any release of IRIX before 6.2, and IRIX 6.2 without XFS patches).
+.TP
+.BI attr= value
+This is used to specify the version of extended attribute inline
+allocation policy to be used.  By default, this is 2, which uses an
+efficient algorithm for managing the available inline inode space
+between attribute and extent data.
+.IP
+The previous version 1, which has fixed regions for attribute and
+extent data, is kept for backwards compatibility with kernels older
+than version 2.6.16.
+.TP
+.BI projid32bit[= value ]
+This is used to enable 32bit quota project identifiers. The
+.I value
+is either 0 or 1, with 1 signifying that 32bit projid are to be enabled.
+If the value is omitted, 1 is assumed.  (This default changed
+in release version 3.2.0.)
+.TP
+.BI sparse[= value ]
+Enable sparse inode chunk allocation. The
+.I value
+is either 0 or 1, with 1 signifying that sparse allocation is enabled.
+If the value is omitted, 1 is assumed. Sparse inode allocation is
+disabled by default. This feature is only available for filesystems
+formatted with
+.B \-m crc=1.
+.IP
+When enabled, sparse inode allocation allows the filesystem to allocate
+smaller than the standard 64-inode chunk when free space is severely
+limited. This feature is useful for filesystems that might fragment free
+space over time such that no free extents are large enough to
+accommodate a chunk of 64 inodes. Without this feature enabled, inode
+allocations can fail with out of space errors under severe fragmented
+free space conditions.
+.RE
+.TP
+.BI \-l " log_section_options"
+These options specify the location, size, and other parameters of the
+log section of the filesystem. The valid
+.I log_section_options
+are:
+.RS 1.2i
+.TP
+.BI agnum= value
+If the log is internal, allocate it in this AG.
+.TP
+.BI internal[= value ]
+This is used to specify that the log section is a piece of the data
+section instead of being another device or logical volume. The
+.I value
+is either 0 or 1, with 1 signifying that the log is internal. If the
+.I value
+is omitted, 1 is assumed.
+.TP
+.BI logdev= device
+This is used to specify that the log section should reside on the
+.I device
+separate from the data section. The
+.B internal=1
+and
+.B logdev
+options are mutually exclusive.
+.TP
+.BI size= value
+This is used to specify the size of the log section.
+.IP
+If the log is contained within the data section and
+.B size
+isn't specified,
+.B mkfs.xfs
+will try to select a suitable log size depending
+on the size of the filesystem.  The actual logsize depends on the
+filesystem block size and the directory block size.
+.IP
+Otherwise, the
+.B size
+suboption is only needed if the log section of the filesystem
+should occupy less space than the size of the special file. The
+.I value
+is specified in bytes or blocks, with a
+.B b
+suffix meaning multiplication by the filesystem block size, as
+described above. The overriding minimum value for size is 512 blocks.
+With some combinations of filesystem block size, inode size,
+and directory block size, the minimum log size is larger than 512 blocks.
+.TP
+.BI version= value
+This specifies the version of the log. The current default is 2,
+which allows for larger log buffer sizes, as well as supporting
+stripe-aligned log writes (see the sunit and su options, below).
+.IP
+The previous version 1, which is limited to 32k log buffers and does
+not support stripe-aligned writes, is kept for backwards compatibility
+with very old 2.4 kernels.
+.TP
+.BI sunit= value
+This specifies the alignment to be used for log writes. The
+.I value
+has to be specified in 512-byte block units. Use the
+.B su
+suboption to specify the log stripe unit size in bytes.
+Log writes will be aligned on this boundary,
+and rounded up to this boundary.
+This gives major improvements in performance on some configurations
+such as software RAID5 when the
+.B sunit
+is specified as the filesystem block size.
+The equivalent byte value must be a multiple of the filesystem block
+size. Version 2 logs are automatically selected if the log
+.B sunit
+suboption is specified.
+.IP
+The
+.B su
+suboption is an alternative to using
+.B sunit.
+.TP
+.BI su= value
+This is used to specify the log stripe. The
+.I value
+has to be specified in bytes, (usually using the
+.BR s " or " b
+suffixes). This value must be a multiple of the filesystem block size.
+Version 2 logs are automatically selected if the log
+.B su
+suboption is specified.
+.TP
+.BI lazy-count= value
+This changes the method of logging various persistent counters
+in the superblock.  Under metadata intensive workloads, these
+counters are updated and logged frequently enough that the superblock
+updates become a serialization point in the filesystem. The
+.I value
+can be either 0 or 1.
+.IP
+With
+.BR lazy-count=1 ,
+the superblock is not modified or logged on every change of the
+persistent counters. Instead, enough information is kept in
+other parts of the filesystem to be able to maintain the persistent
+counter values without needed to keep them in the superblock.
+This gives significant improvements in performance on some configurations.
+The default
+.I value
+is 1 (on) so you must specify
+.B lazy-count=0
+if you want to disable this feature for older kernels which don't support
+it.
+.RE
+.TP
+.BI \-n " naming_options"
+These options specify the version and size parameters for the naming
+(directory) area of the filesystem. The valid
+.I naming_options
+are:
+.RS 1.2i
+.TP
+.BI size= value
+The directory block size is specified with a
+.I value
+in bytes.  The block size must be a power of 2 and cannot be less than the
+filesystem block size.
+The default size
+.I value
+for version 2 directories is 4096 bytes (4 KiB),
+unless the filesystem block size is larger than 4096,
+in which case the default
+.I value
+is the filesystem block size.
+For version 1 directories the block size is the same as the
+filesystem block size.
+.TP
+.BI version= value
+The naming (directory) version
+.I value
+can be either 2 or 'ci', defaulting to 2 if unspecified.
+With version 2 directories, the directory block size can be
+any power of 2 size from the filesystem block size up to 65536.
+.IP
+The
+.B version=ci
+option enables ASCII only case-insensitive filename lookup and version
+2 directories. Filenames are case-preserving, that is, the names
+are stored in directories using the case they were created with.
+.IP
+Note: Version 1 directories are not supported.
+.TP
+.BI ftype= value
+This feature allows the inode type to be stored in the directory
+structure so that the
+.BR readdir (3)
+and
+.BR getdents (2)
+do not need to look up the inode to determine the inode type.
+
+The
+.I value
+is either 0 or 1, with 1 signifying that filetype information
+will be stored in the directory structure.  The default value is 1.
+
+When CRCs are enabled (the default), the ftype functionality is always
+enabled, and cannot be turned off.
+.IP
+.RE
+.TP
+.BI \-p " protofile"
+If the optional
+.BI \-p " protofile"
+argument is given,
+.B mkfs.xfs
+uses
+.I protofile
+as a prototype file and takes its directions from that file.
+The blocks and inodes specifiers in the
+.I protofile
+are provided for backwards compatibility, but are otherwise unused.
+The syntax of the protofile is defined by a number of tokens separated
+by spaces or newlines. Note that the line numbers are not part of the
+syntax but are meant to help you in the following discussion of the file
+contents.
+.nf
+.sp .8v
+.in +5
+\f71       /stand/\f1\f2diskboot\f1\f7
+2       4872 110
+3       d\-\-777 3 1
+4       usr     d\-\-777 3 1
+5       sh      \-\-\-755 3 1 /bin/sh
+6       ken     d\-\-755 6 1
+7               $
+8       b0      b\-\-644 3 1 0 0
+9       c0      c\-\-644 3 1 0 0
+10      fifo    p\-\-644 3 1
+11      slink   l\-\-644 3 1 /a/symbolic/link
+12      :  This is a comment line
+13      $
+14      $\f1
+.in -5
+.fi
+.IP
+Line 1 is a dummy string.
+(It was formerly the bootfilename.)
+It is present for backward
+compatibility; boot blocks are not used on SGI systems.
+.IP
+Note that some string of characters must be present as the first line of
+the proto file to cause it to be parsed correctly; the value
+of this string is immaterial since it is ignored.
+.IP
+Line 2 contains two numeric values (formerly the numbers of blocks and inodes).
+These are also merely for backward compatibility: two numeric values must
+appear at this point for the proto file to be correctly parsed,
+but their values are immaterial since they are ignored.
+.IP
+The lines 3 through 11 specify the files and directories you want to
+include in this filesystem. Line 3 defines the
+root directory. Other directories and
+files that you want in the filesystem
+are indicated by lines 4 through 6 and
+lines 8 through 10. Line 11 contains
+symbolic link syntax.
+.IP
+Notice the dollar sign
+.RB ( $ )
+syntax on line 7. This syntax directs the
+.B mkfs.xfs
+command to terminate the branch of the filesystem it
+is currently on and then continue
+from the directory specified by
+the next line, in this case line 8.
+It must be the last character
+on a line.
+The colon
+on line 12 introduces a comment; all characters up until the
+following newline are ignored.
+Note that this means you cannot
+have a file in a prototype file whose name contains a colon.
+The
+.B $
+on lines 13 and 14 end the process, since no additional
+specifications follow.
+.IP
+File specifications provide the following:
+.IP
+  * file mode
+.br
+  * user ID
+.br
+  * group ID
+.br
+  * the file's beginning contents
+.P
+.IP
+A 6-character string defines the mode for
+a file. The first character of this string
+defines the file type. The character range
+for this first character is
+.B \-bcdpl.
+A file may be a regular file, a block special file,
+a character special file, directory files, named
+pipes (first-in, first out files), and symbolic
+links.
+The second character of the mode string is
+used to specify setuserID mode, in which case
+it is
+.BR u .
+If setuserID mode is not specified, the second character is
+.BR \- .
+The third character of the mode string is
+used to specify the setgroupID mode, in which
+case it is
+.BR g .
+If setgroupID mode is not specified, the third character is
+.BR \- .
+The remaining characters of the mode string are
+a three digit octal number. This octal number
+defines the owner, group, and other read, write,
+and execute permissions for the file, respectively.
+For more information on file permissions, see the
+.BR chmod (1)
+command.
+.IP
+Following the mode character string are two
+decimal number tokens that specify the user and group IDs
+of the file's owner.
+.IP
+In a regular file, the next token specifies the
+pathname from which the contents and size of the
+file are copied.
+In a block or character special file, the next token
+are two decimal numbers that specify the major and minor
+device numbers.
+When a file is a symbolic link, the next token
+specifies the contents of the link.
+
+When the file is a directory, the
+.B mkfs.xfs
+command creates the entries
+.B dot
+(.) and
+.B dot-dot
+(..) and then reads the list of names and file specifications
+in a recursive manner for all of the entries
+in the directory. A scan of the protofile is
+always terminated with the dollar (
+.B $
+) token.
+.TP
+.B \-q
+Quiet option. Normally
+.B mkfs.xfs
+prints the parameters of the filesystem
+to be constructed;
+the
+.B \-q
+flag suppresses this.
+.TP
+.BI \-r " realtime_section_options"
+These options specify the location, size, and other parameters of the
+real-time section of the filesystem. The valid
+.I realtime_section_options
+are:
+.RS 1.2i
+.TP
+.BI rtdev= device
+This is used to specify the
+.I device
+which should contain the real-time section of the filesystem.
+The suboption value is the name of a block device.
+.TP
+.BI extsize= value
+This is used to specify the size of the blocks in the real-time
+section of the filesystem. This
+.I value
+must be a multiple of the filesystem block size. The minimum allowed
+size is the filesystem block size or 4 KiB (whichever is larger); the
+default size is the stripe width for striped volumes or 64 KiB for
+non-striped volumes; the maximum allowed size is 1 GiB. The real-time
+extent size should be carefully chosen to match the parameters of the
+physical media used.
+.TP
+.BI size= value
+This is used to specify the size of the real-time section.
+This suboption is only needed if the real-time section of the
+filesystem should occupy less space than the size of the partition
+or logical volume containing the section.
+.TP
+.BI noalign
+This option disables stripe size detection, enforcing a realtime device with no
+stripe geometry.
+.RE
+.TP
+.BI \-s " sector_size_options"
+This option specifies the fundamental sector size of the filesystem.
+The valid
+.I sector_size_option
+is:
+.RS 1.2i
+.TP
+.BI size= value
+The sector size is specified with a
+.I value
+in bytes.  The default
+.I sector_size
+is 512 bytes. The minimum value for sector size is
+512; the maximum is 32768 (32 KiB). The
+.I sector_size
+must be a power of 2 size and cannot be made larger than the
+filesystem block size.
+.IP
+To specify any options on the command line in units of sectors, this
+option must be specified first so that the sector size is
+applied consistently to all options.
+.RE
+.TP
+.BI \-L " label"
+Set the filesystem
+.IR label .
+XFS filesystem labels can be at most 12 characters long; if
+.I label
+is longer than 12 characters,
+.B mkfs.xfs
+will not proceed with creating the filesystem.  Refer to the
+.BR mount "(8) and " xfs_admin (8)
+manual entries for additional information.
+.TP
+.B \-N
+Causes the file system parameters to be printed out without really
+creating the file system.
+.TP
+.B \-K
+Do not attempt to discard blocks at mkfs time.
+.TP
+.B \-V
+Prints the version number and exits.
+.SH CONFIGURATION FILE FORMAT
+The optional default configuration file in
+.B @sysconfdir@/xfs/mkfs/default
+as well as any alternate configuration file specified via the
+.B \-c
+option must follow a simple ini-style format as shown below.
+Available options consist of a subset of the parameters available
+via the
+.BR mkfs.xfs (8)
+command line.
+Currently all default parameters can only be either enabled or disabled,
+with a value of 1 to enable or 0 to disable.
+See below for a list of all supported configuration parameters and their
+current built-in default settings.
+.PP
+.BI [data]
+.br
+.BI noalign=0
+.PP
+.BI [inode]
+.br
+.BI align=1
+.br
+.BI projid32bit=1
+.br
+.BI sparse=0
+.PP
+.BI [log]
+.br
+.BI lazy-count=1
+.PP
+.BI [metadata]
+.br
+.BI crc=1
+.br
+.BI finobt=1
+.br
+.BI rmapbt=0
+.br
+.BI reflink=0
+.PP
+.BI [naming]
+.br
+.BI ftype=1
+.PP
+.BI [rtdev]
+.br
+.BI noalign=0
+.PP
+.SH SEE ALSO
+.BR xfs (5),
+.BR mkfs (8),
+.BR mount (8),
+.BR xfs_info (8),
+.BR xfs_admin (8).
+.SH BUGS
+With a prototype file, it is not possible to specify hard links.