config REISERFS_FS
	tristate "Reiserfs support"
	select CRC32
	help
	  Stores not just filenames but the files themselves in a balanced
	  tree.  Uses journalling.

	  Balanced trees are more efficient than traditional file system
	  architectural foundations.

	  In general, ReiserFS is as fast as ext2, but is very efficient with
	  large directories and small files.  Additional patches are needed
	  for NFS and quotas, please see 
	  <https://reiser4.wiki.kernel.org/index.php/Main_Page> for links.

	  It is more easily extended to have features currently found in
	  database and keyword search systems than block allocation based file
	  systems are.  The next version will be so extended, and will support
	  plugins consistent with our motto ``It takes more than a license to
	  make source code open.''

	  Read <https://reiser4.wiki.kernel.org/index.php/Main_Page> 
	  to learn more about reiserfs.

	  Sponsored by Threshold Networks, Emusic.com, and Bigstorage.com.

	  If you like it, you can pay us to add new features to it that you
	  need, buy a support contract, or pay us to port it to another OS.

config REISERFS_CHECK
	bool "Enable reiserfs debug mode"
	depends on REISERFS_FS
	help
	  If you set this to Y, then ReiserFS will perform every check it can
	  possibly imagine of its internal consistency throughout its
	  operation.  It will also go substantially slower.  More than once we
	  have forgotten that this was on, and then gone despondent over the
	  latest benchmarks.:-) Use of this option allows our team to go all
	  out in checking for consistency when debugging without fear of its
	  effect on end users.  If you are on the verge of sending in a bug
	  report, say Y and you might get a useful error message.  Almost
	  everyone should say N.

config REISERFS_PROC_INFO
	bool "Stats in /proc/fs/reiserfs"
	depends on REISERFS_FS && PROC_FS
	help
	  Create under /proc/fs/reiserfs a hierarchy of files, displaying
	  various ReiserFS statistics and internal data at the expense of
	  making your kernel or module slightly larger (+8 KB). This also
	  increases the amount of kernel memory required for each mount.
	  Almost everyone but ReiserFS developers and people fine-tuning
	  reiserfs or tracing problems should say N.

config REISERFS_FS_XATTR
	bool "ReiserFS extended attributes"
	depends on REISERFS_FS
	help
	  Extended attributes are name:value pairs associated with inodes by
	  the kernel or by users (see the attr(5) manual page, or visit
	  <http://acl.bestbits.at/> for details).

	  If unsure, say N.

config REISERFS_FS_POSIX_ACL
	bool "ReiserFS POSIX Access Control Lists"
	depends on REISERFS_FS_XATTR
	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 REISERFS_FS_SECURITY
	bool "ReiserFS Security Labels"
	depends on REISERFS_FS_XATTR
	help
	  Security labels support alternative access control models
	  implemented by security modules like SELinux.  This option
	  enables an extended attribute handler for file security
	  labels in the ReiserFS filesystem.

	  If you are not using a security module that requires using
	  extended attributes for file security labels, say N.
