# SPDX-License-Identifier: GPL-2.0-only
config XFS_FS
	tristate "XFS filesystem support"
	depends on BLOCK
	select EXPORTFS
	select LIBCRC32C
	select FS_IOMAP
	help
	  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 <http://oss.sgi.com/projects/xfs/>
	  for complete details.  This implementation is on-disk compatible
	  with the IRIX version of XFS.

	  To compile this file system support as a module, choose M here: the
	  module will be called xfs.  Be aware, however, that if the file
	  system of your root partition is compiled as a module, you'll need
	  to use an initial ramdisk (initrd) to boot.

config XFS_SUPPORT_V4
	bool "Support deprecated V4 (crc=0) format"
	depends on XFS_FS
	default y
	help
	  The V4 filesystem format lacks certain features that are supported
	  by the V5 format, such as metadata checksumming, strengthened
	  metadata verification, and the ability to store timestamps past the
	  year 2038.  Because of this, the V4 format is deprecated.  All users
	  should upgrade by backing up their files, reformatting, and restoring
	  from the backup.

	  Administrators and users can detect a V4 filesystem by running
	  xfs_info against a filesystem mountpoint and checking for a string
	  beginning with "crc=".  If the string "crc=0" is found, the
	  filesystem is a V4 filesystem.  If no such string is found, please
	  upgrade xfsprogs to the latest version and try again.

	  This option will become default N in September 2025.  Support for the
	  V4 format will be removed entirely in September 2030.  Distributors
	  can say N here to withdraw support earlier.

	  To continue supporting the old V4 format (crc=0), say Y.
	  To close off an attack surface, say N.

config XFS_SUPPORT_ASCII_CI
	bool "Support deprecated case-insensitive ascii (ascii-ci=1) format"
	depends on XFS_FS
	default y
	help
	  The ASCII case insensitivity filesystem feature only works correctly
	  on systems that have been coerced into using ISO 8859-1, and it does
	  not work on extended attributes.  The kernel has no visibility into
	  the locale settings in userspace, so it corrupts UTF-8 names.
	  Enabling this feature makes XFS vulnerable to mixed case sensitivity
	  attacks.  Because of this, the feature is deprecated.  All users
	  should upgrade by backing up their files, reformatting, and restoring
	  from the backup.

	  Administrators and users can detect such a filesystem by running
	  xfs_info against a filesystem mountpoint and checking for a string
	  beginning with "ascii-ci=".  If the string "ascii-ci=1" is found, the
	  filesystem is a case-insensitive filesystem.  If no such string is
	  found, please upgrade xfsprogs to the latest version and try again.

	  This option will become default N in September 2025.  Support for the
	  feature will be removed entirely in September 2030.  Distributors
	  can say N here to withdraw support earlier.

	  To continue supporting case-insensitivity (ascii-ci=1), say Y.
	  To close off an attack surface, say N.

config XFS_QUOTA
	bool "XFS Quota support"
	depends on XFS_FS
	select QUOTACTL
	help
	  If you say Y here, you will be able to set limits for disk usage on
	  a per user and/or a per group basis under XFS.  XFS considers quota
	  information as filesystem metadata and uses journaling to provide a
	  higher level guarantee of consistency.  The on-disk data format for
	  quota is also compatible with the IRIX version of XFS, allowing a
	  filesystem to be migrated between Linux and IRIX without any need
	  for conversion.

	  If unsure, say N.  More comprehensive documentation can be found in
	  README.quota in the xfsprogs package.  XFS quota can be used either
	  with or without the generic quota support enabled (CONFIG_QUOTA) -
	  they are completely independent subsystems.

config XFS_POSIX_ACL
	bool "XFS POSIX ACL support"
	depends on XFS_FS
	select FS_POSIX_ACL
	help
	  POSIX Access Control Lists (ACLs) support permissions for users and
	  groups beyond the owner/group/world scheme.

	  If you don't know what Access Control Lists are, say N.

config XFS_RT
	bool "XFS Realtime subvolume support"
	depends on XFS_FS
	help
	  If you say Y here you will be able to mount and use XFS filesystems
	  which contain a realtime subvolume.  The realtime subvolume is a
	  separate area of disk space where only file data is stored.  It was
	  originally designed to provide deterministic data rates suitable
	  for media streaming applications, but is also useful as a generic
	  mechanism for ensuring data and metadata/log I/Os are completely
	  separated.  Regular file I/Os are isolated to a separate device
	  from all other requests, and this can be done quite transparently
	  to applications via the inherit-realtime directory inode flag.

	  See the xfs man page in section 5 for additional information.

	  If unsure, say N.

config XFS_DRAIN_INTENTS
	bool
	select JUMP_LABEL if HAVE_ARCH_JUMP_LABEL

config XFS_LIVE_HOOKS
	bool
	select JUMP_LABEL if HAVE_ARCH_JUMP_LABEL

config XFS_MEMORY_BUFS
	bool

config XFS_BTREE_IN_MEM
	bool

config XFS_ONLINE_SCRUB
	bool "XFS online metadata check support"
	default n
	depends on XFS_FS
	depends on TMPFS && SHMEM
	select XFS_LIVE_HOOKS
	select XFS_DRAIN_INTENTS
	select XFS_MEMORY_BUFS
	help
	  If you say Y here you will be able to check metadata on a
	  mounted XFS filesystem.  This feature is intended to reduce
	  filesystem downtime by supplementing xfs_repair.  The key
	  advantage here is to look for problems proactively so that
	  they can be dealt with in a controlled manner.

	  This feature is considered EXPERIMENTAL.  Use with caution!

	  See the xfs_scrub man page in section 8 for additional information.

	  If unsure, say N.

config XFS_ONLINE_SCRUB_STATS
	bool "XFS online metadata check usage data collection"
	default y
	depends on XFS_ONLINE_SCRUB
	select DEBUG_FS
	help
	  If you say Y here, the kernel will gather usage data about
	  the online metadata check subsystem.  This includes the number
	  of invocations, the outcomes, and the results of repairs, if any.
	  This may slow down scrub slightly due to the use of high precision
	  timers and the need to merge per-invocation information into the
	  filesystem counters.

	  Usage data are collected in /sys/kernel/debug/xfs/scrub.

	  If unsure, say N.

config XFS_ONLINE_REPAIR
	bool "XFS online metadata repair support"
	default n
	depends on XFS_FS && XFS_ONLINE_SCRUB
	select XFS_BTREE_IN_MEM
	help
	  If you say Y here you will be able to repair metadata on a
	  mounted XFS filesystem.  This feature is intended to reduce
	  filesystem downtime by fixing minor problems before they cause the
	  filesystem to go down.  However, it requires that the filesystem be
	  formatted with secondary metadata, such as reverse mappings and inode
	  parent pointers.

	  This feature is considered EXPERIMENTAL.  Use with caution!

	  See the xfs_scrub man page in section 8 for additional information.

	  If unsure, say N.

config XFS_WARN
	bool "XFS Verbose Warnings"
	depends on XFS_FS && !XFS_DEBUG
	help
	  Say Y here to get an XFS build with many additional warnings.
	  It converts ASSERT checks to WARN, so will log any out-of-bounds
	  conditions that occur that would otherwise be missed. It is much
	  lighter weight than XFS_DEBUG and does not modify algorithms and will
	  not cause the kernel to panic on non-fatal errors.

	  However, similar to XFS_DEBUG, it is only advisable to use this if you
	  are debugging a particular problem.

config XFS_DEBUG
	bool "XFS Debugging support"
	depends on XFS_FS
	help
	  Say Y here to get an XFS build with many debugging features,
	  including ASSERT checks, function wrappers around macros,
	  and extra sanity-checking functions in various code paths.

	  Note that the resulting code will be HUGE and SLOW, and probably
	  not useful unless you are debugging a particular problem.

	  Say N unless you are an XFS developer, or you play one on TV.

config XFS_ASSERT_FATAL
	bool "XFS fatal asserts"
	default y
	depends on XFS_FS && XFS_DEBUG
	help
	  Set the default DEBUG mode ASSERT failure behavior.

	  Say Y here to cause DEBUG mode ASSERT failures to result in fatal
	  errors that BUG() the kernel by default. If you say N, ASSERT failures
	  result in warnings.

	  This behavior can be modified at runtime via sysfs.
