#
#  Quota configuration
#

config QUOTA
	bool "Quota support"
	select QUOTACTL
	select SRCU
	help
	  If you say Y here, you will be able to set per user limits for disk
	  usage (also called disk quotas). Currently, it works for the
	  ext2, ext3, ext4, jfs, ocfs2 and reiserfs file systems.
	  Note that gfs2 and xfs use their own quota system.
	  Ext3, ext4 and reiserfs also support journaled quotas for which
	  you don't need to run quotacheck(8) after an unclean shutdown.
	  For further details, read the Quota mini-HOWTO, available from
	  <http://www.tldp.org/docs.html#howto>, or the documentation provided
	  with the quota tools. Probably the quota support is only useful for
	  multi user systems. If unsure, say N.

config QUOTA_NETLINK_INTERFACE
	bool "Report quota messages through netlink interface"
	depends on QUOTACTL && NET
	help
	  If you say Y here, quota warnings (about exceeding softlimit, reaching
	  hardlimit, etc.) will be reported through netlink interface. If unsure,
	  say Y.

config PRINT_QUOTA_WARNING
	bool "Print quota warnings to console (OBSOLETE)"
	depends on QUOTA
	default y
	help
	  If you say Y here, quota warnings (about exceeding softlimit, reaching
	  hardlimit, etc.) will be printed to the process' controlling terminal.
	  Note that this behavior is currently deprecated and may go away in
	  future. Please use notification via netlink socket instead.

config QUOTA_DEBUG
	bool "Additional quota sanity checks"
	depends on QUOTA
	default n
	help
	  If you say Y here, quota subsystem will perform some additional
	  sanity checks of quota internal structures. If unsure, say N.

# Generic support for tree structured quota files. Selected when needed.
config QUOTA_TREE
	 tristate

config QFMT_V1
	tristate "Old quota format support"
	depends on QUOTA
	help
	  This quota format was (is) used by kernels earlier than 2.4.22. If
	  you have quota working and you don't want to convert to new quota
	  format say Y here.

config QFMT_V2
	tristate "Quota format vfsv0 and vfsv1 support"
	depends on QUOTA
	select QUOTA_TREE
	help
	  This config option enables kernel support for vfsv0 and vfsv1 quota
	  formats. Both these formats support 32-bit UIDs/GIDs and vfsv1 format
	  also supports 64-bit inode and block quota limits. If you need this
	  functionality say Y here.

config QUOTACTL
	bool
	default n

config QUOTACTL_COMPAT
	bool
	depends on QUOTACTL && COMPAT_FOR_U64_ALIGNMENT
	default y
