On Tue, Jul 02, 2019 at 01:30:40PM +0100, Sheriff Esseson wrote:
> Convert xfs.txt to ReST, rename and fix broken references, consequently.
> 
> Make the name "value" in "option=value" look like a variable (that it probably
> is), by embedding in angle "<>" brackets, rather than something predifined
> elsewhere. This is inline with the conventions in manuals.
>       
> Also, make defaults of boolean options prefixed with "(*)". This is so that
> options can be compressed to "[no]option" and on a single line, which renders
> consistently and nicely in htmldocs.
> 
> lastly, enforce a "one option, one definition" policy to keep things
> consistent and simple.
> 
> 
> Signed-off-by: Sheriff Esseson <sheriffesse...@gmail.com>
> ---
> 
> v5 aims to comply with the guiding comments on its previous versions.
> 
>  Documentation/filesystems/dax.txt   |   2 +-
>  Documentation/filesystems/index.rst |   5 +-
>  Documentation/filesystems/xfs.rst   | 468 +++++++++++++++++++++++++++
>  Documentation/filesystems/xfs.txt   | 470 ----------------------------
>  MAINTAINERS                         |   2 +-
>  5 files changed, 473 insertions(+), 474 deletions(-)
>  create mode 100644 Documentation/filesystems/xfs.rst
>  delete mode 100644 Documentation/filesystems/xfs.txt
> 
> diff --git a/Documentation/filesystems/dax.txt 
> b/Documentation/filesystems/dax.txt
> index 6d2c0d340..c333285b8 100644
> --- a/Documentation/filesystems/dax.txt
> +++ b/Documentation/filesystems/dax.txt
> @@ -76,7 +76,7 @@ exposure of uninitialized data through mmap.
>  These filesystems may be used for inspiration:
>  - ext2: see Documentation/filesystems/ext2.txt
>  - ext4: see Documentation/filesystems/ext4/
> -- xfs:  see Documentation/filesystems/xfs.txt
> +- xfs:  see Documentation/filesystems/xfs.rst
>  
>  
>  Handling Media Errors
> diff --git a/Documentation/filesystems/index.rst 
> b/Documentation/filesystems/index.rst
> index 1131c34d7..a4cf5fca4 100644
> --- a/Documentation/filesystems/index.rst
> +++ b/Documentation/filesystems/index.rst
> @@ -16,7 +16,7 @@ algorithms work.
>  .. toctree::
>     :maxdepth: 2
>  
> -   path-lookup.rst
> +   path-lookup
>     api-summary
>     splice
>  
> @@ -40,4 +40,5 @@ Documentation for individual filesystem types can be found 
> here.
>  .. toctree::
>     :maxdepth: 2
>  
> -   binderfs.rst
> +   binderfs
> +   xfs
> diff --git a/Documentation/filesystems/xfs.rst 
> b/Documentation/filesystems/xfs.rst
> new file mode 100644
> index 000000000..d36ef042c
> --- /dev/null
> +++ b/Documentation/filesystems/xfs.rst
> @@ -0,0 +1,468 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +======================
> +The SGI XFS Filesystem
> +======================
> +
> +XFS is a high performance journaling filesystem which originated
> +on the SGI IRIX platform.  It is completely multi-threaded, can
> +support large files and large filesystems, extended attributes,
> +variable block sizes, is extent based, and makes extensive use of
> +Btrees (directories, extents, free space) to aid both performance
> +and scalability.
> +
> +Refer to the documentation at https://xfs.wiki.kernel.org/
> +for further details.  This implementation is on-disk compatible
> +with the IRIX version of XFS.
> +
> +
> +Mount Options
> +=============
> +
> +When mounting an XFS filesystem, the following options are accepted.  For
> +boolean mount options, the names with the "(*)" prefix is the default 
> behaviour.
> +For example, take a behaviour enabled by default to be a one (1) or, a zero 
> (0)
> +otherwise, ``(*)[no]default`` would be 0 while ``[no](*)default`` , a 1.

That's really confusing.  Does this mean that I can pass discard=1 now?

(no)

I also don't really understand why we need to cram so much into a single
line.  Why not just:

    discard
    nodiscard (default)
        Something something discard chomps on free space, chomp chomp
        a chewy chomp, pretend I wrote the real text here, etc.

Or if you really want the single-line header...

    [no]discard
        Something something discard chomps on free space, chomp chomp
        a chewy chomp, pretend I wrote the real text here, etc.

        ''nodiscard'' is the default setting.

Please don't introduce '1's and '0's here because there are other parts
of xfs where you /can/ enable or disable features by saying "foo=0" or
"foo=1".

There's probably more to say but the text reflowing since v1 makes this
patch unreviewable because ugh 1000-line diff.

--D

> +
> +   allocsize=<size>
> +        Sets the buffered I/O end-of-file preallocation size when doing 
> delayed
> +        allocation writeout (default size is 64KiB).  Valid values for this
> +        option are page size (typically 4KiB) through to 1GiB, inclusive, in
> +        power-of-2 increments.
> +
> +        The default behaviour is for dynamic end-of-file preallocation size,
> +        which uses a set of heuristics to optimise the preallocation size 
> based
> +        on the current allocation patterns within the file and the access
> +        patterns to the file. Specifying a fixed allocsize value turns off 
> the
> +        dynamic behaviour.
> +
> +   [no]attr2
> +        The options enable/disable an "opportunistic" improvement to be made 
> in
> +        the way inline extended attributes are stored on-disk.  When the new
> +        form is used for the first time when ``attr2`` is selected (either 
> when
> +        setting or removing extended attributes) the on-disk superblock 
> feature
> +        bit field will be updated to reflect this format being in use.
> +
> +        The default behaviour is determined by the on-disk feature bit
> +        indicating that ``attr2`` behaviour is active. If either mount 
> option is
> +        set, then that becomes the new default used by the filesystem. 
> However
> +        on CRC enabled filesystems, the ``attr2`` format is always used , 
> and so
> +        will reject the ``noattr2`` mount option if it is set.
> +
> +   (*)[no]discard
> +        Enable/disable the issuing of commands to let the block device 
> reclaim
> +        space freed by the filesystem.  This is useful for SSD devices, 
> thinly
> +        provisioned LUNs and virtual machine images, but may have a 
> performance
> +        impact.
> +
> +        Note: It is currently recommended that you use the ``fstrim``
> +        application to discard unused blocks rather than the ``discard`` 
> mount
> +        option because the performance impact of this option is quite severe.
> +
> +   grpid/bsdgroups
> +   nogrpid/(*)sysvgroups
> +        These options define what group ID a newly created file gets.  When
> +        ``grpid`` is set, it takes the group ID of the directory in which it 
> is
> +        created; otherwise it takes the ``fsgid`` of the current process, 
> unless
> +        the directory has the ``setgid`` bit set, in which case it takes the
> +        ``gid`` from the parent directory, and also gets the ``setgid`` bit 
> set
> +        if it is a directory itself.
> +
> +   filestreams
> +        Make the data allocator use the filestreams allocation mode across 
> the
> +        entire filesystem rather than just on directories configured to use 
> it.
> +
> +   (*)[no]ikeep
> +        When ``ikeep`` is specified, XFS does not delete empty inode clusters
> +        and keeps them around on disk.  When ``noikeep`` is specified, empty
> +        inode clusters are returned to the free space pool.
> +
> +   inode32 | (*)inode64
> +        When ``inode32`` is specified, it indicates that XFS limits inode
> +        creation to locations which will not result in inode numbers with 
> more
> +        than 32 bits of significance.
> +
> +        When ``inode64`` is specified, it indicates that XFS is allowed to
> +        create inodes at any location in the filesystem, including those 
> which
> +        will result in inode numbers occupying more than 32 bits of
> +        significance.
> +
> +        ``inode32`` is provided for backwards compatibility with older 
> systems
> +        and applications, since 64 bits inode numbers might cause problems 
> for
> +        some applications that cannot handle large inode numbers.  If
> +        applications are in use which do not handle inode numbers bigger 
> than 32
> +        bits, the ``inode32`` option should be specified.
> +
> +
> +   (*)[no]largeio
> +        If ``nolargeio`` is specified, the optimal I/O reported in 
> st_blksize by
> +        **stat(2)** will be as small as possible to allow user applications 
> to
> +        avoid inefficient read/modify/write I/O.  This is typically the page
> +        size of the machine, as this is the granularity of the page cache.
> +
> +        If ``largeio`` is specified, a filesystem that was created with a
> +        ``swidth`` specified will return the ``swidth`` value (in bytes) in
> +        st_blksize. If the filesystem does not have a ``swidth`` specified 
> but
> +        does specify an ``allocsize`` then ``allocsize`` (in bytes) will be
> +        returned instead. Otherwise the behaviour is the same as if
> +        ``nolargeio`` was specified.
> +
> +   logbufs=<value>
> +        Set the number of in-memory log buffers to ``value``.  Valid numbers
> +        range from 2-8 inclusive.
> +
> +        The default value is 8 buffers.
> +
> +        If the memory cost of 8 log buffers is too high on small systems, 
> then
> +        it may be reduced at some cost to performance on metadata intensive
> +        workloads. The ``logbsize`` option below controls the size of each
> +        buffer and so is also relevant to this case.
> +
> +   logbsize=<value>
> +        Set the size of each in-memory log buffer to ``value``.  The size 
> may be
> +        specified in bytes, or in kilobytes with a "k" suffix. Valid sizes 
> for
> +        version 1 and version 2 logs are 16384 (16k) and 32768 (32k).  Valid
> +        sizes for version 2 logs also include 65536 (64k), 131072 (128k) and
> +        262144 (256k). The ``logbsize`` must be an integer multiple of the
> +        "log stripe unit" configured at mkfs time.
> +
> +        The default value for for version 1 logs is 32768, while the default
> +        value for version 2 logs is ``MAX(32768, log_sunit)``.
> +
> +   logdev=<device>
> +        Use ``device`` as an external log (metadata journal).  In an XFS
> +        filesystem, the log device can be separate from the data device or
> +        contained within it.
> +
> +   rtdev=<device>
> +        An XFS filesystem has up to three parts: a data section, a log 
> section,
> +        and a real-time section.  The real-time section is optional.  If
> +        enabled, ``rtdev`` sets ``device`` to be used as an external 
> real-time
> +        section, similar to ``logdev`` above.
> +
> +   noalign
> +        Data allocations will not be aligned at stripe unit boundaries. This 
> is
> +        only relevant to filesystems created with non-zero data alignment
> +        parameters (sunit, swidth) by mkfs.
> +
> +   norecovery
> +        The filesystem will be mounted without running log recovery.  If the
> +        filesystem was not cleanly unmounted, it is likely to be inconsistent
> +        when mounted in ``norecovery`` mode.  Some files or directories may 
> not
> +        be accessible because of this.  Filesystems mounted ``norecovery`` 
> must
> +        be mounted read-only or the mount will fail.
> +
> +   nouuid
> +        Don't check for double mounted file systems using the file system 
> uuid.
> +        This is useful to mount LVM snapshot volumes, and often used in
> +        combination with ``norecovery`` for mounting read-only snapshots.
> +
> +   noquota
> +     Forcibly turns off all quota accounting and enforcement
> +     within the filesystem.
> +
> +   uquota/usrquota/uqnoenforce/quota
> +        User disk quota accounting enabled, and limits (optionally) enforced.
> +        Refer to **xfs_quota(8)** for further details.
> +
> +   gquota/grpquota/gqnoenforce
> +        Group disk quota accounting enabled and limits (optionally) enforced.
> +        Refer to **xfs_quota(8)** for further details.
> +
> +   pquota/prjquota/pqnoenforce
> +        Project disk quota accounting enabled and limits (optionally) 
> enforced.
> +        Refer to **xfs_quota(8)** for further details.
> +
> +   sunit=<value>
> +        Used to specify the stripe unit for a RAID device or (in conjunction
> +        with ``swidth`` below) a stripe volume.  ``value`` must be specified 
> in
> +        512-byte block units. This option is only relevant to filesystems 
> that
> +        were created with non-zero data alignment parameters.
> +
> +        The ``sunit`` parameter specified must be compatible with the 
> existing
> +        filesystem alignment characteristics.  In general, that means the 
> only
> +        valid changes to ``sunit`` are increasing it by a power-of-2 
> multiple.
> +
> +        Typically, this mount option is necessary only after an underlying 
> RAID
> +        device has had its geometry modified, such as adding a new disk to a
> +        RAID5 lun and reshaping it.
> +
> +   swidth=<value>
> +        Used to specify the stripe width for a RAID device or (in conjunction
> +        with ``sunit`` above) a stripe volume.  ``value`` must be specified 
> in
> +        512-byte block units. This option, like ``sunit`` above, is only
> +        relevant to filesystems that were created with non-zero data 
> alignment
> +        parameters.
> +
> +        The ``swidth`` parameter specified must be compatible with the 
> existing
> +        filesystem alignment characteristics.  In general, that means the 
> only
> +        valid swidth values are any integer multiple of a valid ``sunit`` 
> value.
> +
> +        Typically, this mount option is necessary only after an underlying 
> RAID
> +        device has had its geometry modified, such as adding a new disk to a
> +        RAID5 lun and reshaping it.
> +
> +
> +   swalloc
> +        Data allocations will be rounded up to stripe width boundaries when 
> the
> +        current end of file is being extended and the file size is larger 
> than
> +        the stripe width size.
> +
> +   wsync
> +        When specified, all filesystem namespace operations are executed
> +        synchronously. This ensures that when the namespace operation 
> (create,
> +        unlink, etc) completes, the change to the namespace is on stable
> +        storage. This is useful in HA setups where failover must not result 
> in
> +        clients seeing inconsistent namespace presentation during or after a
> +        failover event.
> +
> +
> +Deprecated Mount Options
> +========================
> +
> +  Name                               Removal Schedule
> +  ----                               ----------------
> +
> +
> +Removed Mount Options
> +=====================
> +
> +  Name                               Removed
> +  ----                               -------
> +  delaylog/nodelaylog                v4.0
> +  ihashsize                  v4.0
> +  irixsgid                   v4.0
> +  osyncisdsync/osyncisosync  v4.0
> +  barrier                    v4.19
> +  nobarrier                  v4.19
> +
> +
> +sysctls
> +=======
> +
> +The following sysctls are available for the XFS filesystem:
> +
> +  fs.xfs.stats_clear         (Min: 0  Default: 0  Max: 1)
> +     Setting this to "1" clears accumulated XFS statistics
> +     in /proc/fs/xfs/stat.  It then immediately resets to "0".
> +
> +  fs.xfs.xfssyncd_centisecs  (Min: 100  Default: 3000  Max: 720000)
> +     The interval at which the filesystem flushes metadata
> +     out to disk and runs internal cache cleanup routines.
> +
> +  fs.xfs.filestream_centisecs        (Min: 1  Default: 3000  Max: 360000)
> +     The interval at which the filesystem ages filestreams cache
> +     references and returns timed-out AGs back to the free stream
> +     pool.
> +
> +  fs.xfs.speculative_prealloc_lifetime
> +             (Units: seconds   Min: 1  Default: 300  Max: 86400)
> +     The interval at which the background scanning for inodes
> +     with unused speculative preallocation runs. The scan
> +     removes unused preallocation from clean inodes and releases
> +     the unused space back to the free pool.
> +
> +  fs.xfs.error_level         (Min: 0  Default: 3  Max: 11)
> +     A volume knob for error reporting when internal errors occur.
> +     This will generate detailed messages & backtraces for filesystem
> +     shutdowns, for example.  Current threshold values are:
> +
> +             XFS_ERRLEVEL_OFF:       0
> +             XFS_ERRLEVEL_LOW:       1
> +             XFS_ERRLEVEL_HIGH:      5
> +
> +  fs.xfs.panic_mask          (Min: 0  Default: 0  Max: 256)
> +     Causes certain error conditions to call BUG(). Value is a bitmask;
> +     OR together the tags which represent errors which should cause panics:
> +
> +             XFS_NO_PTAG                     0
> +             XFS_PTAG_IFLUSH                 0x00000001
> +             XFS_PTAG_LOGRES                 0x00000002
> +             XFS_PTAG_AILDELETE              0x00000004
> +             XFS_PTAG_ERROR_REPORT           0x00000008
> +             XFS_PTAG_SHUTDOWN_CORRUPT       0x00000010
> +             XFS_PTAG_SHUTDOWN_IOERROR       0x00000020
> +             XFS_PTAG_SHUTDOWN_LOGERROR      0x00000040
> +             XFS_PTAG_FSBLOCK_ZERO           0x00000080
> +             XFS_PTAG_VERIFIER_ERROR         0x00000100
> +
> +     This option is intended for debugging only.
> +
> +  fs.xfs.irix_symlink_mode   (Min: 0  Default: 0  Max: 1)
> +     Controls whether symlinks are created with mode 0777 (default)
> +     or whether their mode is affected by the umask (irix mode).
> +
> +  fs.xfs.irix_sgid_inherit   (Min: 0  Default: 0  Max: 1)
> +     Controls files created in SGID directories.
> +     If the group ID of the new file does not match the effective group
> +     ID or one of the supplementary group IDs of the parent dir, the
> +     ISGID bit is cleared if the irix_sgid_inherit compatibility sysctl
> +     is set.
> +
> +  fs.xfs.inherit_sync                (Min: 0  Default: 1  Max: 1)
> +     Setting this to "1" will cause the "sync" flag set
> +     by the **xfs_io(8)** chattr command on a directory to be
> +     inherited by files in that directory.
> +
> +  fs.xfs.inherit_nodump              (Min: 0  Default: 1  Max: 1)
> +     Setting this to "1" will cause the "nodump" flag set
> +     by the **xfs_io(8)** chattr command on a directory to be
> +     inherited by files in that directory.
> +
> +  fs.xfs.inherit_noatime     (Min: 0  Default: 1  Max: 1)
> +     Setting this to "1" will cause the "noatime" flag set
> +     by the **xfs_io(8)** chattr command on a directory to be
> +     inherited by files in that directory.
> +
> +  fs.xfs.inherit_nosymlinks  (Min: 0  Default: 1  Max: 1)
> +     Setting this to "1" will cause the "nosymlinks" flag set
> +     by the **xfs_io(8)** chattr command on a directory to be
> +     inherited by files in that directory.
> +
> +  fs.xfs.inherit_nodefrag    (Min: 0  Default: 1  Max: 1)
> +     Setting this to "1" will cause the "nodefrag" flag set
> +     by the **xfs_io(8)** chattr command on a directory to be
> +     inherited by files in that directory.
> +
> +  fs.xfs.rotorstep           (Min: 1  Default: 1  Max: 256)
> +     In "inode32" allocation mode, this option determines how many
> +     files the allocator attempts to allocate in the same allocation
> +     group before moving to the next allocation group.  The intent
> +     is to control the rate at which the allocator moves between
> +     allocation groups when allocating extents for new files.
> +
> +Deprecated Sysctls
> +==================
> +
> +None at present.
> +
> +
> +Removed Sysctls
> +===============
> +
> +  Name                               Removed
> +  ----                               -------
> +  fs.xfs.xfsbufd_centisec    v4.0
> +  fs.xfs.age_buffer_centisecs        v4.0
> +
> +
> +Error handling
> +==============
> +
> +XFS can act differently according to the type of error found during its
> +operation. The implementation introduces the following concepts to the error
> +handler:
> +
> + -failure speed:
> +     Defines how fast XFS should propagate an error upwards when a specific
> +     error is found during the filesystem operation. It can propagate
> +     immediately, after a defined number of retries, after a set time period,
> +     or simply retry forever.
> +
> + -error classes:
> +     Specifies the subsystem the error configuration will apply to, such as
> +     metadata IO or memory allocation. Different subsystems will have
> +     different error handlers for which behaviour can be configured.
> +
> + -error handlers:
> +     Defines the behavior for a specific error.
> +
> +The filesystem behavior during an error can be set via sysfs files. Each
> +error handler works independently - the first condition met by an error 
> handler
> +for a specific class will cause the error to be propagated rather than reset 
> and
> +retried.
> +
> +The action taken by the filesystem when the error is propagated is context
> +dependent - it may cause a shut down in the case of an unrecoverable error,
> +it may be reported back to userspace, or it may even be ignored because
> +there's nothing useful we can with the error or anyone we can report it to 
> (e.g.
> +during unmount).
> +
> +The configuration files are organized into the following hierarchy for each
> +mounted filesystem:
> +
> +  /sys/fs/xfs/<dev>/error/<class>/<error>/
> +
> +Where:
> +  <dev>
> +     The short device name of the mounted filesystem. This is the same device
> +     name that shows up in XFS kernel error messages as "XFS(<dev>): ..."
> +
> +  <class>
> +     The subsystem the error configuration belongs to. As of 4.9, the defined
> +     classes are:
> +
> +             - "metadata": applies metadata buffer write IO
> +
> +  <error>
> +     The individual error handler configurations.
> +
> +
> +Each filesystem has "global" error configuration options defined in their top
> +level directory:
> +
> +  /sys/fs/xfs/<dev>/error/
> +
> +  fail_at_unmount            (Min:  0  Default:  1  Max: 1)
> +     Defines the filesystem error behavior at unmount time.
> +
> +     If set to a value of 1, XFS will override all other error configurations
> +     during unmount and replace them with "immediate fail" characteristics.
> +     i.e. no retries, no retry timeout. This will always allow unmount to
> +     succeed when there are persistent errors present.
> +
> +     If set to 0, the configured retry behaviour will continue until all
> +     retries and/or timeouts have been exhausted. This will delay unmount
> +     completion when there are persistent errors, and it may prevent the
> +     filesystem from ever unmounting fully in the case of "retry forever"
> +     handler configurations.
> +
> +     Note: there is no guarantee that fail_at_unmount can be set while an
> +     unmount is in progress. It is possible that the sysfs entries are
> +     removed by the unmounting filesystem before a "retry forever" error
> +     handler configuration causes unmount to hang, and hence the filesystem
> +     must be configured appropriately before unmount begins to prevent
> +     unmount hangs.
> +
> +Each filesystem has specific error class handlers that define the error
> +propagation behaviour for specific errors. There is also a "default" error
> +handler defined, which defines the behaviour for all errors that don't have
> +specific handlers defined. Where multiple retry constraints are configuredi 
> for
> +a single error, the first retry configuration that expires will cause the 
> error
> +to be propagated. The handler configurations are found in the directory:
> +
> +  /sys/fs/xfs/<dev>/error/<class>/<error>/
> +
> +  max_retries                        (Min: -1  Default: Varies  Max: INTMAX)
> +     Defines the allowed number of retries of a specific error before
> +     the filesystem will propagate the error. The retry count for a given
> +     error context (e.g. a specific metadata buffer) is reset every time
> +     there is a successful completion of the operation.
> +
> +     Setting the value to "-1" will cause XFS to retry forever for this
> +     specific error.
> +
> +     Setting the value to "0" will cause XFS to fail immediately when the
> +     specific error is reported.
> +
> +     Setting the value to "N" (where 0 < N < Max) will make XFS retry the
> +     operation "N" times before propagating the error.
> +
> +  retry_timeout_seconds              (Min:  -1  Default:  Varies  Max: 1 day)
> +     Define the amount of time (in seconds) that the filesystem is
> +     allowed to retry its operations when the specific error is
> +     found.
> +
> +     Setting the value to "-1" will allow XFS to retry forever for this
> +     specific error.
> +
> +     Setting the value to "0" will cause XFS to fail immediately when the
> +     specific error is reported.
> +
> +     Setting the value to "N" (where 0 < N < Max) will allow XFS to retry the
> +     operation for up to "N" seconds before propagating the error.
> +
> +Note: The default behaviour for a specific error handler is dependent on both
> +the class and error context. For example, the default values for
> +"metadata/ENODEV" are "0" rather than "-1" so that this error handler 
> defaults
> +to "fail immediately" behaviour. This is done because ENODEV is a fatal,
> +unrecoverable error no matter how many times the metadata IO is retried.
> diff --git a/Documentation/filesystems/xfs.txt 
> b/Documentation/filesystems/xfs.txt
> deleted file mode 100644
> index a5cbb5e0e..000000000
> --- a/Documentation/filesystems/xfs.txt
> +++ /dev/null
> @@ -1,470 +0,0 @@
> -
> -The SGI XFS Filesystem
> -======================
> -
> -XFS is a high performance journaling filesystem which originated
> -on the SGI IRIX platform.  It is completely multi-threaded, can
> -support large files and large filesystems, extended attributes,
> -variable block sizes, is extent based, and makes extensive use of
> -Btrees (directories, extents, free space) to aid both performance
> -and scalability.
> -
> -Refer to the documentation at https://xfs.wiki.kernel.org/
> -for further details.  This implementation is on-disk compatible
> -with the IRIX version of XFS.
> -
> -
> -Mount Options
> -=============
> -
> -When mounting an XFS filesystem, the following options are accepted.
> -For boolean mount options, the names with the (*) suffix is the
> -default behaviour.
> -
> -  allocsize=size
> -     Sets the buffered I/O end-of-file preallocation size when
> -     doing delayed allocation writeout (default size is 64KiB).
> -     Valid values for this option are page size (typically 4KiB)
> -     through to 1GiB, inclusive, in power-of-2 increments.
> -
> -     The default behaviour is for dynamic end-of-file
> -     preallocation size, which uses a set of heuristics to
> -     optimise the preallocation size based on the current
> -     allocation patterns within the file and the access patterns
> -     to the file. Specifying a fixed allocsize value turns off
> -     the dynamic behaviour.
> -
> -  attr2
> -  noattr2
> -     The options enable/disable an "opportunistic" improvement to
> -     be made in the way inline extended attributes are stored
> -     on-disk.  When the new form is used for the first time when
> -     attr2 is selected (either when setting or removing extended
> -     attributes) the on-disk superblock feature bit field will be
> -     updated to reflect this format being in use.
> -
> -     The default behaviour is determined by the on-disk feature
> -     bit indicating that attr2 behaviour is active. If either
> -     mount option it set, then that becomes the new default used
> -     by the filesystem.
> -
> -     CRC enabled filesystems always use the attr2 format, and so
> -     will reject the noattr2 mount option if it is set.
> -
> -  discard
> -  nodiscard (*)
> -     Enable/disable the issuing of commands to let the block
> -     device reclaim space freed by the filesystem.  This is
> -     useful for SSD devices, thinly provisioned LUNs and virtual
> -     machine images, but may have a performance impact.
> -
> -     Note: It is currently recommended that you use the fstrim
> -     application to discard unused blocks rather than the discard
> -     mount option because the performance impact of this option
> -     is quite severe.
> -
> -  grpid/bsdgroups
> -  nogrpid/sysvgroups (*)
> -     These options define what group ID a newly created file
> -     gets.  When grpid is set, it takes the group ID of the
> -     directory in which it is created; otherwise it takes the
> -     fsgid of the current process, unless the directory has the
> -     setgid bit set, in which case it takes the gid from the
> -     parent directory, and also gets the setgid bit set if it is
> -     a directory itself.
> -
> -  filestreams
> -     Make the data allocator use the filestreams allocation mode
> -     across the entire filesystem rather than just on directories
> -     configured to use it.
> -
> -  ikeep
> -  noikeep (*)
> -     When ikeep is specified, XFS does not delete empty inode
> -     clusters and keeps them around on disk.  When noikeep is
> -     specified, empty inode clusters are returned to the free
> -     space pool.
> -
> -  inode32
> -  inode64 (*)
> -     When inode32 is specified, it indicates that XFS limits
> -     inode creation to locations which will not result in inode
> -     numbers with more than 32 bits of significance.
> -
> -     When inode64 is specified, it indicates that XFS is allowed
> -     to create inodes at any location in the filesystem,
> -     including those which will result in inode numbers occupying
> -     more than 32 bits of significance. 
> -
> -     inode32 is provided for backwards compatibility with older
> -     systems and applications, since 64 bits inode numbers might
> -     cause problems for some applications that cannot handle
> -     large inode numbers.  If applications are in use which do
> -     not handle inode numbers bigger than 32 bits, the inode32
> -     option should be specified.
> -
> -
> -  largeio
> -  nolargeio (*)
> -     If "nolargeio" is specified, the optimal I/O reported in
> -     st_blksize by stat(2) will be as small as possible to allow
> -     user applications to avoid inefficient read/modify/write
> -     I/O.  This is typically the page size of the machine, as
> -     this is the granularity of the page cache.
> -
> -     If "largeio" specified, a filesystem that was created with a
> -     "swidth" specified will return the "swidth" value (in bytes)
> -     in st_blksize. If the filesystem does not have a "swidth"
> -     specified but does specify an "allocsize" then "allocsize"
> -     (in bytes) will be returned instead. Otherwise the behaviour
> -     is the same as if "nolargeio" was specified.
> -
> -  logbufs=value
> -     Set the number of in-memory log buffers.  Valid numbers
> -     range from 2-8 inclusive.
> -
> -     The default value is 8 buffers.
> -
> -     If the memory cost of 8 log buffers is too high on small
> -     systems, then it may be reduced at some cost to performance
> -     on metadata intensive workloads. The logbsize option below
> -     controls the size of each buffer and so is also relevant to
> -     this case.
> -
> -  logbsize=value
> -     Set the size of each in-memory log buffer.  The size may be
> -     specified in bytes, or in kilobytes with a "k" suffix.
> -     Valid sizes for version 1 and version 2 logs are 16384 (16k)
> -     and 32768 (32k).  Valid sizes for version 2 logs also
> -     include 65536 (64k), 131072 (128k) and 262144 (256k). The
> -     logbsize must be an integer multiple of the log
> -     stripe unit configured at mkfs time.
> -
> -     The default value for for version 1 logs is 32768, while the
> -     default value for version 2 logs is MAX(32768, log_sunit).
> -
> -  logdev=device and rtdev=device
> -     Use an external log (metadata journal) and/or real-time device.
> -     An XFS filesystem has up to three parts: a data section, a log
> -     section, and a real-time section.  The real-time section is
> -     optional, and the log section can be separate from the data
> -     section or contained within it.
> -
> -  noalign
> -     Data allocations will not be aligned at stripe unit
> -     boundaries. This is only relevant to filesystems created
> -     with non-zero data alignment parameters (sunit, swidth) by
> -     mkfs.
> -
> -  norecovery
> -     The filesystem will be mounted without running log recovery.
> -     If the filesystem was not cleanly unmounted, it is likely to
> -     be inconsistent when mounted in "norecovery" mode.
> -     Some files or directories may not be accessible because of this.
> -     Filesystems mounted "norecovery" must be mounted read-only or
> -     the mount will fail.
> -
> -  nouuid
> -     Don't check for double mounted file systems using the file
> -     system uuid.  This is useful to mount LVM snapshot volumes,
> -     and often used in combination with "norecovery" for mounting
> -     read-only snapshots.
> -
> -  noquota
> -     Forcibly turns off all quota accounting and enforcement
> -     within the filesystem.
> -
> -  uquota/usrquota/uqnoenforce/quota
> -     User disk quota accounting enabled, and limits (optionally)
> -     enforced.  Refer to xfs_quota(8) for further details.
> -
> -  gquota/grpquota/gqnoenforce
> -     Group disk quota accounting enabled and limits (optionally)
> -     enforced.  Refer to xfs_quota(8) for further details.
> -
> -  pquota/prjquota/pqnoenforce
> -     Project disk quota accounting enabled and limits (optionally)
> -     enforced.  Refer to xfs_quota(8) for further details.
> -
> -  sunit=value and swidth=value
> -     Used to specify the stripe unit and width for a RAID device
> -     or a stripe volume.  "value" must be specified in 512-byte
> -     block units. These options are only relevant to filesystems
> -     that were created with non-zero data alignment parameters.
> -
> -     The sunit and swidth parameters specified must be compatible
> -     with the existing filesystem alignment characteristics.  In
> -     general, that means the only valid changes to sunit are
> -     increasing it by a power-of-2 multiple. Valid swidth values
> -     are any integer multiple of a valid sunit value.
> -
> -     Typically the only time these mount options are necessary if
> -     after an underlying RAID device has had it's geometry
> -     modified, such as adding a new disk to a RAID5 lun and
> -     reshaping it.
> -
> -  swalloc
> -     Data allocations will be rounded up to stripe width boundaries
> -     when the current end of file is being extended and the file
> -     size is larger than the stripe width size.
> -
> -  wsync
> -     When specified, all filesystem namespace operations are
> -     executed synchronously. This ensures that when the namespace
> -     operation (create, unlink, etc) completes, the change to the
> -     namespace is on stable storage. This is useful in HA setups
> -     where failover must not result in clients seeing
> -     inconsistent namespace presentation during or after a
> -     failover event.
> -
> -
> -Deprecated Mount Options
> -========================
> -
> -  Name                               Removal Schedule
> -  ----                               ----------------
> -
> -
> -Removed Mount Options
> -=====================
> -
> -  Name                               Removed
> -  ----                               -------
> -  delaylog/nodelaylog                v4.0
> -  ihashsize                  v4.0
> -  irixsgid                   v4.0
> -  osyncisdsync/osyncisosync  v4.0
> -  barrier                    v4.19
> -  nobarrier                  v4.19
> -
> -
> -sysctls
> -=======
> -
> -The following sysctls are available for the XFS filesystem:
> -
> -  fs.xfs.stats_clear         (Min: 0  Default: 0  Max: 1)
> -     Setting this to "1" clears accumulated XFS statistics
> -     in /proc/fs/xfs/stat.  It then immediately resets to "0".
> -
> -  fs.xfs.xfssyncd_centisecs  (Min: 100  Default: 3000  Max: 720000)
> -     The interval at which the filesystem flushes metadata
> -     out to disk and runs internal cache cleanup routines.
> -
> -  fs.xfs.filestream_centisecs        (Min: 1  Default: 3000  Max: 360000)
> -     The interval at which the filesystem ages filestreams cache
> -     references and returns timed-out AGs back to the free stream
> -     pool.
> -
> -  fs.xfs.speculative_prealloc_lifetime
> -             (Units: seconds   Min: 1  Default: 300  Max: 86400)
> -     The interval at which the background scanning for inodes
> -     with unused speculative preallocation runs. The scan
> -     removes unused preallocation from clean inodes and releases
> -     the unused space back to the free pool.
> -
> -  fs.xfs.error_level         (Min: 0  Default: 3  Max: 11)
> -     A volume knob for error reporting when internal errors occur.
> -     This will generate detailed messages & backtraces for filesystem
> -     shutdowns, for example.  Current threshold values are:
> -
> -             XFS_ERRLEVEL_OFF:       0
> -             XFS_ERRLEVEL_LOW:       1
> -             XFS_ERRLEVEL_HIGH:      5
> -
> -  fs.xfs.panic_mask          (Min: 0  Default: 0  Max: 256)
> -     Causes certain error conditions to call BUG(). Value is a bitmask;
> -     OR together the tags which represent errors which should cause panics:
> -
> -             XFS_NO_PTAG                     0
> -             XFS_PTAG_IFLUSH                 0x00000001
> -             XFS_PTAG_LOGRES                 0x00000002
> -             XFS_PTAG_AILDELETE              0x00000004
> -             XFS_PTAG_ERROR_REPORT           0x00000008
> -             XFS_PTAG_SHUTDOWN_CORRUPT       0x00000010
> -             XFS_PTAG_SHUTDOWN_IOERROR       0x00000020
> -             XFS_PTAG_SHUTDOWN_LOGERROR      0x00000040
> -             XFS_PTAG_FSBLOCK_ZERO           0x00000080
> -             XFS_PTAG_VERIFIER_ERROR         0x00000100
> -
> -     This option is intended for debugging only.
> -
> -  fs.xfs.irix_symlink_mode   (Min: 0  Default: 0  Max: 1)
> -     Controls whether symlinks are created with mode 0777 (default)
> -     or whether their mode is affected by the umask (irix mode).
> -
> -  fs.xfs.irix_sgid_inherit   (Min: 0  Default: 0  Max: 1)
> -     Controls files created in SGID directories.
> -     If the group ID of the new file does not match the effective group
> -     ID or one of the supplementary group IDs of the parent dir, the
> -     ISGID bit is cleared if the irix_sgid_inherit compatibility sysctl
> -     is set.
> -
> -  fs.xfs.inherit_sync                (Min: 0  Default: 1  Max: 1)
> -     Setting this to "1" will cause the "sync" flag set
> -     by the xfs_io(8) chattr command on a directory to be
> -     inherited by files in that directory.
> -
> -  fs.xfs.inherit_nodump              (Min: 0  Default: 1  Max: 1)
> -     Setting this to "1" will cause the "nodump" flag set
> -     by the xfs_io(8) chattr command on a directory to be
> -     inherited by files in that directory.
> -
> -  fs.xfs.inherit_noatime     (Min: 0  Default: 1  Max: 1)
> -     Setting this to "1" will cause the "noatime" flag set
> -     by the xfs_io(8) chattr command on a directory to be
> -     inherited by files in that directory.
> -
> -  fs.xfs.inherit_nosymlinks  (Min: 0  Default: 1  Max: 1)
> -     Setting this to "1" will cause the "nosymlinks" flag set
> -     by the xfs_io(8) chattr command on a directory to be
> -     inherited by files in that directory.
> -
> -  fs.xfs.inherit_nodefrag    (Min: 0  Default: 1  Max: 1)
> -     Setting this to "1" will cause the "nodefrag" flag set
> -     by the xfs_io(8) chattr command on a directory to be
> -     inherited by files in that directory.
> -
> -  fs.xfs.rotorstep           (Min: 1  Default: 1  Max: 256)
> -     In "inode32" allocation mode, this option determines how many
> -     files the allocator attempts to allocate in the same allocation
> -     group before moving to the next allocation group.  The intent
> -     is to control the rate at which the allocator moves between
> -     allocation groups when allocating extents for new files.
> -
> -Deprecated Sysctls
> -==================
> -
> -None at present.
> -
> -
> -Removed Sysctls
> -===============
> -
> -  Name                               Removed
> -  ----                               -------
> -  fs.xfs.xfsbufd_centisec    v4.0
> -  fs.xfs.age_buffer_centisecs        v4.0
> -
> -
> -Error handling
> -==============
> -
> -XFS can act differently according to the type of error found during its
> -operation. The implementation introduces the following concepts to the error
> -handler:
> -
> - -failure speed:
> -     Defines how fast XFS should propagate an error upwards when a specific
> -     error is found during the filesystem operation. It can propagate
> -     immediately, after a defined number of retries, after a set time period,
> -     or simply retry forever.
> -
> - -error classes:
> -     Specifies the subsystem the error configuration will apply to, such as
> -     metadata IO or memory allocation. Different subsystems will have
> -     different error handlers for which behaviour can be configured.
> -
> - -error handlers:
> -     Defines the behavior for a specific error.
> -
> -The filesystem behavior during an error can be set via sysfs files. Each
> -error handler works independently - the first condition met by an error 
> handler
> -for a specific class will cause the error to be propagated rather than reset 
> and
> -retried.
> -
> -The action taken by the filesystem when the error is propagated is context
> -dependent - it may cause a shut down in the case of an unrecoverable error,
> -it may be reported back to userspace, or it may even be ignored because
> -there's nothing useful we can with the error or anyone we can report it to 
> (e.g.
> -during unmount).
> -
> -The configuration files are organized into the following hierarchy for each
> -mounted filesystem:
> -
> -  /sys/fs/xfs/<dev>/error/<class>/<error>/
> -
> -Where:
> -  <dev>
> -     The short device name of the mounted filesystem. This is the same device
> -     name that shows up in XFS kernel error messages as "XFS(<dev>): ..."
> -
> -  <class>
> -     The subsystem the error configuration belongs to. As of 4.9, the defined
> -     classes are:
> -
> -             - "metadata": applies metadata buffer write IO
> -
> -  <error>
> -     The individual error handler configurations.
> -
> -
> -Each filesystem has "global" error configuration options defined in their top
> -level directory:
> -
> -  /sys/fs/xfs/<dev>/error/
> -
> -  fail_at_unmount            (Min:  0  Default:  1  Max: 1)
> -     Defines the filesystem error behavior at unmount time.
> -
> -     If set to a value of 1, XFS will override all other error configurations
> -     during unmount and replace them with "immediate fail" characteristics.
> -     i.e. no retries, no retry timeout. This will always allow unmount to
> -     succeed when there are persistent errors present.
> -
> -     If set to 0, the configured retry behaviour will continue until all
> -     retries and/or timeouts have been exhausted. This will delay unmount
> -     completion when there are persistent errors, and it may prevent the
> -     filesystem from ever unmounting fully in the case of "retry forever"
> -     handler configurations.
> -
> -     Note: there is no guarantee that fail_at_unmount can be set while an
> -     unmount is in progress. It is possible that the sysfs entries are
> -     removed by the unmounting filesystem before a "retry forever" error
> -     handler configuration causes unmount to hang, and hence the filesystem
> -     must be configured appropriately before unmount begins to prevent
> -     unmount hangs.
> -
> -Each filesystem has specific error class handlers that define the error
> -propagation behaviour for specific errors. There is also a "default" error
> -handler defined, which defines the behaviour for all errors that don't have
> -specific handlers defined. Where multiple retry constraints are configuredi 
> for
> -a single error, the first retry configuration that expires will cause the 
> error
> -to be propagated. The handler configurations are found in the directory:
> -
> -  /sys/fs/xfs/<dev>/error/<class>/<error>/
> -
> -  max_retries                        (Min: -1  Default: Varies  Max: INTMAX)
> -     Defines the allowed number of retries of a specific error before
> -     the filesystem will propagate the error. The retry count for a given
> -     error context (e.g. a specific metadata buffer) is reset every time
> -     there is a successful completion of the operation.
> -
> -     Setting the value to "-1" will cause XFS to retry forever for this
> -     specific error.
> -
> -     Setting the value to "0" will cause XFS to fail immediately when the
> -     specific error is reported.
> -
> -     Setting the value to "N" (where 0 < N < Max) will make XFS retry the
> -     operation "N" times before propagating the error.
> -
> -  retry_timeout_seconds              (Min:  -1  Default:  Varies  Max: 1 day)
> -     Define the amount of time (in seconds) that the filesystem is
> -     allowed to retry its operations when the specific error is
> -     found.
> -
> -     Setting the value to "-1" will allow XFS to retry forever for this
> -     specific error.
> -
> -     Setting the value to "0" will cause XFS to fail immediately when the
> -     specific error is reported.
> -
> -     Setting the value to "N" (where 0 < N < Max) will allow XFS to retry the
> -     operation for up to "N" seconds before propagating the error.
> -
> -Note: The default behaviour for a specific error handler is dependent on both
> -the class and error context. For example, the default values for
> -"metadata/ENODEV" are "0" rather than "-1" so that this error handler 
> defaults
> -to "fail immediately" behaviour. This is done because ENODEV is a fatal,
> -unrecoverable error no matter how many times the metadata IO is retried.
> diff --git a/MAINTAINERS b/MAINTAINERS
> index d0ed73599..66e972e9a 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -17364,7 +17364,7 @@ L:    linux-...@vger.kernel.org
>  W:   http://xfs.org/
>  T:   git git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git
>  S:   Supported
> -F:   Documentation/filesystems/xfs.txt
> +F:   Documentation/filesystems/xfs.rst
>  F:   fs/xfs/
>  
>  XILINX AXI ETHERNET DRIVER
> -- 
> 2.22.0
> 

Reply via email to