# SPDX-License-Identifier: GPL-2.0-only
config F2FS_FS
	tristate "F2FS filesystem support"
	depends on BLOCK
	select BUFFER_HEAD
	select NLS
	select CRYPTO
	select CRYPTO_CRC32
	select F2FS_FS_XATTR if FS_ENCRYPTION
	select FS_ENCRYPTION_ALGS if FS_ENCRYPTION
	select FS_IOMAP
	select LZ4_COMPRESS if F2FS_FS_LZ4
	select LZ4_DECOMPRESS if F2FS_FS_LZ4
	select LZ4HC_COMPRESS if F2FS_FS_LZ4HC
	select LZO_COMPRESS if F2FS_FS_LZO
	select LZO_DECOMPRESS if F2FS_FS_LZO
	select ZSTD_COMPRESS if F2FS_FS_ZSTD
	select ZSTD_DECOMPRESS if F2FS_FS_ZSTD
	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 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.

	  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.

config F2FS_CHECK_FS
	bool "F2FS consistency checking feature"
	depends on F2FS_FS
	help
	  Enables BUG_ONs which check the filesystem consistency in runtime.

	  If you want to improve the performance, 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
	default y
	help
	  Support LZO compress algorithm, if unsure, say Y.

config F2FS_FS_LZORLE
	bool "LZO-RLE compression support"
	depends on F2FS_FS_LZO
	default y
	help
	  Support LZO-RLE compress algorithm, if unsure, say Y.

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

config F2FS_FS_LZ4HC
	bool "LZ4HC compression support"
	depends on F2FS_FS_LZ4
	default y
	help
	  Support LZ4HC compress algorithm, LZ4HC has compatible on-disk
	  layout with LZ4, if unsure, say Y.

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

config F2FS_IOSTAT
	bool "F2FS IO statistics information"
	depends on F2FS_FS
	default y
	help
	  Support getting IO statistics through sysfs and printing out periodic
	  IO statistics tracepoint events. You have to turn on "iostat_enable"
	  sysfs node to enable this feature.

config F2FS_UNFAIR_RWSEM
	bool "F2FS unfair rw_semaphore"
	depends on F2FS_FS && BLK_CGROUP
	help
	  Use unfair rw_semaphore, if system configured IO priority by block
	  cgroup.