config XFS_FS
	tristate "XFS filesystem support"
	depends on BLOCK
	select EXPORTFS
	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
	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_DEBUG
	bool "XFS Debugging support (EXPERIMENTAL)"
	depends on XFS_FS && EXPERIMENTAL
	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.
