# SPDX-License-Identifier: GPL-2.0-only
#
#  Quota configuration
#

config QUOTA
	bool "Quota support"
	select QUOTACTL
	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, f2fs, jfs and ocfs2 file systems. Note that gfs2
	  and xfs use their own quota system. Ext3 and ext4 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 <https://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 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
