config XFS_FS
	tristate "XFS filesystem support"
	depends on BLOCK
	depends on (64BIT || LBDAF)
	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_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.

	  To learn more about Access Control Lists, visit the POSIX ACLs for
	  Linux website <http://acl.bestbits.at/>.

	  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_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.
