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@xxxxxxxxxx> Looks ok modulo comments in the 3.5/4 patch. Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --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@xxxxxxxxxxxxxxx > 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@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html