config F2FS_FS
	tristate "F2FS filesystem support"
	depends on BLOCK
	select NLS
	select CRYPTO
	select CRYPTO_CRC32
	select F2FS_FS_XATTR if FS_ENCRYPTION
	select FS_ENCRYPTION_ALGS if FS_ENCRYPTION
	help
	  F2FS is based on Log-structured File System (LFS), which supports
	  versatile "flash-friendly" features. The design has been focused on
	  addressing the fundamental issues in LFS, which are snowball effect
	  of wandering tree and high cleaning overhead.

	  Since flash-based storages show different characteristics according to
	  the internal geometry or flash memory management schemes aka FTL, F2FS
	  and tools support various parameters not only for configuring on-disk
	  layout, but also for selecting allocation and cleaning algorithms.

	  If unsure, say N.

config F2FS_STAT_FS
	bool "F2FS Status Information"
	depends on F2FS_FS
	default y
	help
	  /sys/kernel/debug/f2fs/ contains information about all the partitions
	  mounted as f2fs. Each file shows the whole f2fs information.

	  /sys/kernel/debug/f2fs/status includes:
	    - major filesystem information managed by f2fs currently
	    - average SIT information about whole segments
	    - current memory footprint consumed by f2fs.

config F2FS_FS_XATTR
	bool "F2FS extended attributes"
	depends on F2FS_FS
	default y
	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 F2FS_FS_POSIX_ACL
	bool "F2FS Access Control Lists"
	depends on F2FS_FS_XATTR
	select FS_POSIX_ACL
	default y
	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 F2FS_FS_SECURITY
	bool "F2FS Security Labels"
	depends on F2FS_FS_XATTR
	help
	  Security labels provide an access control facility to support Linux
	  Security Models (LSMs) accepted by AppArmor, SELinux, Smack and TOMOYO
	  Linux. This option enables an extended attribute handler for file
	  security labels in the f2fs filesystem, so that it requires enabling
	  the extended attribute support in advance. In particular you need this
	  option if you use the setcap command to assign initial process capabi-
	  lities to executables (the security.* extended attributes).

	  If you are not using a security module, say N.

#VENDOR_EDIT huangjianan@TECH.Storage.FS.F2FS, 2020-03-08, add for aging version
config OPPO_F2FS_DEBUG
	string
	option env="OPPO_F2FS_DEBUG"

config F2FS_CHECK_FS
	bool "F2FS consistency checking feature"
	depends on F2FS_FS
	#VENDOR_EDIT huangjianan@TECH.Storage.FS.F2FS, 2020-03-08, add for aging version
	default y if OPPO_F2FS_DEBUG = "true"
	default n if !OPPO_F2FS_DEBUG
	help
	  Enables BUG_ONs which check the filesystem consistency in runtime.

	  If you want to improve the performance, say N.

config F2FS_FS_ENCRYPTION
	bool "F2FS Encryption"
	depends on F2FS_FS
	select FS_ENCRYPTION
	help
	  This kconfig symbol is deprecated; now it just selects
	  FS_ENCRYPTION.  Use CONFIG_FS_ENCRYPTION=y in new config
	  files.

config F2FS_IO_TRACE
	bool "F2FS IO tracer"
	depends on F2FS_FS
	depends on FUNCTION_TRACER
	help
	  F2FS IO trace is based on a function trace, which gathers process
	  information and block IO patterns in the filesystem level.

	  If unsure, say N.

config F2FS_FAULT_INJECTION
	bool "F2FS fault injection facility"
	depends on F2FS_FS
	help
	  Test F2FS to inject faults such as ENOMEM, ENOSPC, and so on.

	  If unsure, say N.

config F2FS_FS_COMPRESSION
	bool "F2FS compression feature"
	depends on F2FS_FS
	help
	  Enable filesystem-level compression on f2fs regular files,
	  multiple back-end compression algorithms are supported.

config F2FS_FS_LZO
	bool "LZO compression support"
	depends on F2FS_FS_COMPRESSION
	select LZO_COMPRESS
	select LZO_DECOMPRESS
	default y
	help
	  Support LZO compress algorithm, if unsure, say Y.

config F2FS_FS_LZ4
	bool "LZ4 compression support"
	depends on F2FS_FS_COMPRESSION
	select LZ4_COMPRESS
	select LZ4_DECOMPRESS
	default y
	help
	  Support LZ4 compress algorithm, if unsure, say Y.

config F2FS_FS_ZSTD
	bool "ZSTD compression support"
	depends on F2FS_FS_COMPRESSION
	select ZSTD_COMPRESS
	select ZSTD_DECOMPRESS
	default y
	help
	  Support ZSTD compress algorithm, if unsure, say Y.

config F2FS_GRADING_SSR
	bool "F2FS grading ssr"
	depends on F2FS_FS
	default y
	help
	  use grading ssr to improve the end performance

#VENDOR_EDIT yanwu@TECH.Storage.FS.oF2FS, 2019/08/14, add f2fs big-data statistics
config F2FS_BD_STAT
	bool "F2FS Bigdata Statisitics Information"
	depends on F2FS_FS
	default y
	help
	  contains the f2fs big-data statistics information about specific partition
	  mounted as f2fs.
	  /proc/fs/f2fs/<partition>/base_info:
	    - basic statistics information
	  /proc/fs/f2fs/<partition>/discard_info
	    - discard statistics information
	  /proc/fs/f2fs/<partition>/cp_info
	    - checkpoint statistics information
	  /proc/fs/f2fs/<partition>/gc_info
	    - gc statistics information
	  /proc/fs/f2fs/<partition>/fsync_info
	    - fsync statistics information
	  /proc/fs/f2fs/<partition>/hotcold_info
	    - hot/cold statistics information

config OPLUS_FEATURE_OF2FS
	bool "OF2FS independent repo"
	default n
	depends on F2FS_FS
	help
	  define this config to switch f2fs repo.
