xref: /kernel/linux/linux-6.6/fs/btrfs/Kconfig (revision 62306a36)
162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciconfig BTRFS_FS
462306a36Sopenharmony_ci	tristate "Btrfs filesystem support"
562306a36Sopenharmony_ci	select BLK_CGROUP_PUNT_BIO
662306a36Sopenharmony_ci	select CRYPTO
762306a36Sopenharmony_ci	select CRYPTO_CRC32C
862306a36Sopenharmony_ci	select LIBCRC32C
962306a36Sopenharmony_ci	select CRYPTO_XXHASH
1062306a36Sopenharmony_ci	select CRYPTO_SHA256
1162306a36Sopenharmony_ci	select CRYPTO_BLAKE2B
1262306a36Sopenharmony_ci	select ZLIB_INFLATE
1362306a36Sopenharmony_ci	select ZLIB_DEFLATE
1462306a36Sopenharmony_ci	select LZO_COMPRESS
1562306a36Sopenharmony_ci	select LZO_DECOMPRESS
1662306a36Sopenharmony_ci	select ZSTD_COMPRESS
1762306a36Sopenharmony_ci	select ZSTD_DECOMPRESS
1862306a36Sopenharmony_ci	select FS_IOMAP
1962306a36Sopenharmony_ci	select RAID6_PQ
2062306a36Sopenharmony_ci	select XOR_BLOCKS
2162306a36Sopenharmony_ci	depends on PAGE_SIZE_LESS_THAN_256KB
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci	help
2462306a36Sopenharmony_ci	  Btrfs is a general purpose copy-on-write filesystem with extents,
2562306a36Sopenharmony_ci	  writable snapshotting, support for multiple devices and many more
2662306a36Sopenharmony_ci	  features focused on fault tolerance, repair and easy administration.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci	  The filesystem disk format is no longer unstable, and it's not
2962306a36Sopenharmony_ci	  expected to change unless there are strong reasons to do so. If there
3062306a36Sopenharmony_ci	  is a format change, file systems with a unchanged format will
3162306a36Sopenharmony_ci	  continue to be mountable and usable by newer kernels.
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	  For more information, please see the web pages at
3462306a36Sopenharmony_ci	  https://btrfs.readthedocs.io
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci	  To compile this file system support as a module, choose M here. The
3762306a36Sopenharmony_ci	  module will be called btrfs.
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci	  If unsure, say N.
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ciconfig BTRFS_FS_POSIX_ACL
4262306a36Sopenharmony_ci	bool "Btrfs POSIX Access Control Lists"
4362306a36Sopenharmony_ci	depends on BTRFS_FS
4462306a36Sopenharmony_ci	select FS_POSIX_ACL
4562306a36Sopenharmony_ci	help
4662306a36Sopenharmony_ci	  POSIX Access Control Lists (ACLs) support permissions for users and
4762306a36Sopenharmony_ci	  groups beyond the owner/group/world scheme.
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci	  If you don't know what Access Control Lists are, say N
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ciconfig BTRFS_FS_CHECK_INTEGRITY
5262306a36Sopenharmony_ci	bool "Btrfs with integrity check tool compiled in (DEPRECATED)"
5362306a36Sopenharmony_ci	depends on BTRFS_FS
5462306a36Sopenharmony_ci	help
5562306a36Sopenharmony_ci	  This feature has been deprecated and will be removed in 6.7.
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci	  Adds code that examines all block write requests (including
5862306a36Sopenharmony_ci	  writes of the super block). The goal is to verify that the
5962306a36Sopenharmony_ci	  state of the filesystem on disk is always consistent, i.e.,
6062306a36Sopenharmony_ci	  after a power-loss or kernel panic event the filesystem is
6162306a36Sopenharmony_ci	  in a consistent state.
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci	  If the integrity check tool is included and activated in
6462306a36Sopenharmony_ci	  the mount options, plenty of kernel memory is used, and
6562306a36Sopenharmony_ci	  plenty of additional CPU cycles are spent. Enabling this
6662306a36Sopenharmony_ci	  functionality is not intended for normal use.
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci	  In most cases, unless you are a btrfs developer who needs
6962306a36Sopenharmony_ci	  to verify the integrity of (super)-block write requests
7062306a36Sopenharmony_ci	  during the run of a regression test, say N
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ciconfig BTRFS_FS_RUN_SANITY_TESTS
7362306a36Sopenharmony_ci	bool "Btrfs will run sanity tests upon loading"
7462306a36Sopenharmony_ci	depends on BTRFS_FS
7562306a36Sopenharmony_ci	help
7662306a36Sopenharmony_ci	  This will run some basic sanity tests on the free space cache
7762306a36Sopenharmony_ci	  code to make sure it is acting as it should.  These are mostly
7862306a36Sopenharmony_ci	  regression tests and are only really interesting to btrfs
7962306a36Sopenharmony_ci	  developers.
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci	  If unsure, say N.
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ciconfig BTRFS_DEBUG
8462306a36Sopenharmony_ci	bool "Btrfs debugging support"
8562306a36Sopenharmony_ci	depends on BTRFS_FS
8662306a36Sopenharmony_ci	help
8762306a36Sopenharmony_ci	  Enable run-time debugging support for the btrfs filesystem. This may
8862306a36Sopenharmony_ci	  enable additional and expensive checks with negative impact on
8962306a36Sopenharmony_ci	  performance, or export extra information via sysfs.
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci	  If unsure, say N.
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ciconfig BTRFS_ASSERT
9462306a36Sopenharmony_ci	bool "Btrfs assert support"
9562306a36Sopenharmony_ci	depends on BTRFS_FS
9662306a36Sopenharmony_ci	help
9762306a36Sopenharmony_ci	  Enable run-time assertion checking.  This will result in panics if
9862306a36Sopenharmony_ci	  any of the assertions trip.  This is meant for btrfs developers only.
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci	  If unsure, say N.
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ciconfig BTRFS_FS_REF_VERIFY
10362306a36Sopenharmony_ci	bool "Btrfs with the ref verify tool compiled in"
10462306a36Sopenharmony_ci	depends on BTRFS_FS
10562306a36Sopenharmony_ci	default n
10662306a36Sopenharmony_ci	help
10762306a36Sopenharmony_ci	  Enable run-time extent reference verification instrumentation.  This
10862306a36Sopenharmony_ci	  is meant to be used by btrfs developers for tracking down extent
10962306a36Sopenharmony_ci	  reference problems or verifying they didn't break something.
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci	  If unsure, say N.
112