162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciconfig EROFS_FS
462306a36Sopenharmony_ci	tristate "EROFS filesystem support"
562306a36Sopenharmony_ci	depends on BLOCK
662306a36Sopenharmony_ci	select FS_IOMAP
762306a36Sopenharmony_ci	select LIBCRC32C
862306a36Sopenharmony_ci	help
962306a36Sopenharmony_ci	  EROFS (Enhanced Read-Only File System) is a lightweight read-only
1062306a36Sopenharmony_ci	  file system with modern designs (e.g. no buffer heads, inline
1162306a36Sopenharmony_ci	  xattrs/data, chunk-based deduplication, multiple devices, etc.) for
1262306a36Sopenharmony_ci	  scenarios which need high-performance read-only solutions, e.g.
1362306a36Sopenharmony_ci	  smartphones with Android OS, LiveCDs and high-density hosts with
1462306a36Sopenharmony_ci	  numerous containers;
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci	  It also provides fixed-sized output compression support in order to
1762306a36Sopenharmony_ci	  improve storage density as well as keep relatively higher compression
1862306a36Sopenharmony_ci	  ratios and implements in-place decompression to reuse the file page
1962306a36Sopenharmony_ci	  for compressed data temporarily with proper strategies, which is
2062306a36Sopenharmony_ci	  quite useful to ensure guaranteed end-to-end runtime decompression
2162306a36Sopenharmony_ci	  performance under extremely memory pressure without extra cost.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci	  See the documentation at <file:Documentation/filesystems/erofs.rst>
2462306a36Sopenharmony_ci	  for more details.
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci	  If unsure, say N.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciconfig EROFS_FS_DEBUG
2962306a36Sopenharmony_ci	bool "EROFS debugging feature"
3062306a36Sopenharmony_ci	depends on EROFS_FS
3162306a36Sopenharmony_ci	help
3262306a36Sopenharmony_ci	  Print debugging messages and enable more BUG_ONs which check
3362306a36Sopenharmony_ci	  filesystem consistency and find potential issues aggressively,
3462306a36Sopenharmony_ci	  which can be used for Android eng build, for example.
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci	  For daily use, say N.
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciconfig EROFS_FS_XATTR
3962306a36Sopenharmony_ci	bool "EROFS extended attributes"
4062306a36Sopenharmony_ci	depends on EROFS_FS
4162306a36Sopenharmony_ci	select XXHASH
4262306a36Sopenharmony_ci	default y
4362306a36Sopenharmony_ci	help
4462306a36Sopenharmony_ci	  Extended attributes are name:value pairs associated with inodes by
4562306a36Sopenharmony_ci	  the kernel or by users (see the attr(5) manual page, or visit
4662306a36Sopenharmony_ci	  <http://acl.bestbits.at/> for details).
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci	  If unsure, say N.
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ciconfig EROFS_FS_POSIX_ACL
5162306a36Sopenharmony_ci	bool "EROFS Access Control Lists"
5262306a36Sopenharmony_ci	depends on EROFS_FS_XATTR
5362306a36Sopenharmony_ci	select FS_POSIX_ACL
5462306a36Sopenharmony_ci	default y
5562306a36Sopenharmony_ci	help
5662306a36Sopenharmony_ci	  Posix Access Control Lists (ACLs) support permissions for users and
5762306a36Sopenharmony_ci	  groups beyond the owner/group/world scheme.
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci	  To learn more about Access Control Lists, visit the POSIX ACLs for
6062306a36Sopenharmony_ci	  Linux website <http://acl.bestbits.at/>.
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci	  If you don't know what Access Control Lists are, say N.
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ciconfig EROFS_FS_SECURITY
6562306a36Sopenharmony_ci	bool "EROFS Security Labels"
6662306a36Sopenharmony_ci	depends on EROFS_FS_XATTR
6762306a36Sopenharmony_ci	default y
6862306a36Sopenharmony_ci	help
6962306a36Sopenharmony_ci	  Security labels provide an access control facility to support Linux
7062306a36Sopenharmony_ci	  Security Models (LSMs) accepted by AppArmor, SELinux, Smack and TOMOYO
7162306a36Sopenharmony_ci	  Linux. This option enables an extended attribute handler for file
7262306a36Sopenharmony_ci	  security labels in the erofs filesystem, so that it requires enabling
7362306a36Sopenharmony_ci	  the extended attribute support in advance.
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci	  If you are not using a security module, say N.
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciconfig EROFS_FS_ZIP
7862306a36Sopenharmony_ci	bool "EROFS Data Compression Support"
7962306a36Sopenharmony_ci	depends on EROFS_FS
8062306a36Sopenharmony_ci	select LZ4_DECOMPRESS
8162306a36Sopenharmony_ci	default y
8262306a36Sopenharmony_ci	help
8362306a36Sopenharmony_ci	  Enable fixed-sized output compression for EROFS.
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci	  If you don't want to enable compression feature, say N.
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ciconfig EROFS_FS_ZIP_LZMA
8862306a36Sopenharmony_ci	bool "EROFS LZMA compressed data support"
8962306a36Sopenharmony_ci	depends on EROFS_FS_ZIP
9062306a36Sopenharmony_ci	select XZ_DEC
9162306a36Sopenharmony_ci	select XZ_DEC_MICROLZMA
9262306a36Sopenharmony_ci	help
9362306a36Sopenharmony_ci	  Saying Y here includes support for reading EROFS file systems
9462306a36Sopenharmony_ci	  containing LZMA compressed data, specifically called microLZMA. it
9562306a36Sopenharmony_ci	  gives better compression ratios than the LZ4 algorithm, at the
9662306a36Sopenharmony_ci	  expense of more CPU overhead.
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci	  LZMA support is an experimental feature for now and so most file
9962306a36Sopenharmony_ci	  systems will be readable without selecting this option.
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci	  If unsure, say N.
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ciconfig EROFS_FS_ZIP_DEFLATE
10462306a36Sopenharmony_ci	bool "EROFS DEFLATE compressed data support"
10562306a36Sopenharmony_ci	depends on EROFS_FS_ZIP
10662306a36Sopenharmony_ci	select ZLIB_INFLATE
10762306a36Sopenharmony_ci	help
10862306a36Sopenharmony_ci	  Saying Y here includes support for reading EROFS file systems
10962306a36Sopenharmony_ci	  containing DEFLATE compressed data.  It gives better compression
11062306a36Sopenharmony_ci	  ratios than the default LZ4 format, while it costs more CPU
11162306a36Sopenharmony_ci	  overhead.
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci	  DEFLATE support is an experimental feature for now and so most
11462306a36Sopenharmony_ci	  file systems will be readable without selecting this option.
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci	  If unsure, say N.
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ciconfig EROFS_FS_ONDEMAND
11962306a36Sopenharmony_ci	bool "EROFS fscache-based on-demand read support"
12062306a36Sopenharmony_ci	depends on CACHEFILES_ONDEMAND && (EROFS_FS=m && FSCACHE || EROFS_FS=y && FSCACHE=y)
12162306a36Sopenharmony_ci	default n
12262306a36Sopenharmony_ci	help
12362306a36Sopenharmony_ci	  This permits EROFS to use fscache-backed data blobs with on-demand
12462306a36Sopenharmony_ci	  read support.
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci	  If unsure, say N.
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ciconfig EROFS_FS_PCPU_KTHREAD
12962306a36Sopenharmony_ci	bool "EROFS per-cpu decompression kthread workers"
13062306a36Sopenharmony_ci	depends on EROFS_FS_ZIP
13162306a36Sopenharmony_ci	help
13262306a36Sopenharmony_ci	  Saying Y here enables per-CPU kthread workers pool to carry out
13362306a36Sopenharmony_ci	  async decompression for low latencies on some architectures.
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci	  If unsure, say N.
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ciconfig EROFS_FS_PCPU_KTHREAD_HIPRI
13862306a36Sopenharmony_ci	bool "EROFS high priority per-CPU kthread workers"
13962306a36Sopenharmony_ci	depends on EROFS_FS_ZIP && EROFS_FS_PCPU_KTHREAD
14062306a36Sopenharmony_ci	default y
14162306a36Sopenharmony_ci	help
14262306a36Sopenharmony_ci	  This permits EROFS to configure per-CPU kthread workers to run
14362306a36Sopenharmony_ci	  at higher priority.
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci	  If unsure, say N.
146