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