xref: /linux/fs/btrfs/Kconfig (revision cc38d178ff33543cdb0bd58cfbb9a7c41372ff75)
1852eb3aeSDavid Sterba# SPDX-License-Identifier: GPL-2.0
2852eb3aeSDavid Sterba
3335debeeSAlexey Dobriyanconfig BTRFS_FS
4aa825914SDavid Sterba	tristate "Btrfs filesystem support"
52c275afeSChristoph Hellwig	select BLK_CGROUP_PUNT_BIO
6b261d222SEric Biggers	select CRC32
7d5178578SJohannes Thumshirn	select CRYPTO
8d5178578SJohannes Thumshirn	select CRYPTO_CRC32C
93951e7f0SJohannes Thumshirn	select CRYPTO_XXHASH
103831bf00SJohannes Thumshirn	select CRYPTO_SHA256
1178f926f7SDavid Sterba	select CRYPTO_BLAKE2B
12335debeeSAlexey Dobriyan	select ZLIB_INFLATE
13335debeeSAlexey Dobriyan	select ZLIB_DEFLATE
14a6fa6faeSLi Zefan	select LZO_COMPRESS
15a6fa6faeSLi Zefan	select LZO_DECOMPRESS
165c1aab1dSNick Terrell	select ZSTD_COMPRESS
175c1aab1dSNick Terrell	select ZSTD_DECOMPRESS
18f85781fbSGoldwyn Rodrigues	select FS_IOMAP
1953b381b3SDavid Woodhouse	select RAID6_PQ
2010e78e3aSTomasz Torcz	select XOR_BLOCKS
21e9009095SNathan Chancellor	depends on PAGE_SIZE_LESS_THAN_256KB
2253b381b3SDavid Woodhouse
23335debeeSAlexey Dobriyan	help
244204617dSDavid Sterba	  Btrfs is a general purpose copy-on-write filesystem with extents,
254204617dSDavid Sterba	  writable snapshotting, support for multiple devices and many more
264204617dSDavid Sterba	  features focused on fault tolerance, repair and easy administration.
27335debeeSAlexey Dobriyan
284204617dSDavid Sterba	  The filesystem disk format is no longer unstable, and it's not
294204617dSDavid Sterba	  expected to change unless there are strong reasons to do so. If there
304204617dSDavid Sterba	  is a format change, file systems with a unchanged format will
314204617dSDavid Sterba	  continue to be mountable and usable by newer kernels.
324204617dSDavid Sterba
334204617dSDavid Sterba	  For more information, please see the web pages at
345facccc9SBhaskar Chowdhury	  https://btrfs.readthedocs.io
35335debeeSAlexey Dobriyan
36335debeeSAlexey Dobriyan	  To compile this file system support as a module, choose M here. The
37335debeeSAlexey Dobriyan	  module will be called btrfs.
38335debeeSAlexey Dobriyan
39335debeeSAlexey Dobriyan	  If unsure, say N.
40bef62ef3SChristian Hesse
41bef62ef3SChristian Hesseconfig BTRFS_FS_POSIX_ACL
42bef62ef3SChristian Hesse	bool "Btrfs POSIX Access Control Lists"
43bef62ef3SChristian Hesse	depends on BTRFS_FS
44bef62ef3SChristian Hesse	select FS_POSIX_ACL
45bef62ef3SChristian Hesse	help
46bef62ef3SChristian Hesse	  POSIX Access Control Lists (ACLs) support permissions for users and
47bef62ef3SChristian Hesse	  groups beyond the owner/group/world scheme.
48bef62ef3SChristian Hesse
49bef62ef3SChristian Hesse	  If you don't know what Access Control Lists are, say N
50c975dd46SStefan Behrens
5174255aa0SJosef Bacikconfig BTRFS_FS_RUN_SANITY_TESTS
5274255aa0SJosef Bacik	bool "Btrfs will run sanity tests upon loading"
5374255aa0SJosef Bacik	depends on BTRFS_FS
5474255aa0SJosef Bacik	help
55c16b984cSDavid Sterba	  This will run sanity tests for core functionality like free space,
56c16b984cSDavid Sterba	  extent maps, extent io, extent buffers, inodes, qgroups and others,
57c16b984cSDavid Sterba	  at module load time.  These are mostly regression tests and are only
58c16b984cSDavid Sterba	  interesting to developers.
5974255aa0SJosef Bacik
6074255aa0SJosef Bacik	  If unsure, say N.
6174255aa0SJosef Bacik
626d49ba1bSEric Sandeenconfig BTRFS_DEBUG
636d49ba1bSEric Sandeen	bool "Btrfs debugging support"
646d49ba1bSEric Sandeen	depends on BTRFS_FS
656d49ba1bSEric Sandeen	help
66c16b984cSDavid Sterba	  Enable run-time debugging support for the btrfs filesystem.
67c16b984cSDavid Sterba
68c16b984cSDavid Sterba	  Additional potentially expensive checks, debugging functionality or
69c16b984cSDavid Sterba	  sysfs exported information is enabled, like leak checks of internal
70c16b984cSDavid Sterba	  objects, optional forced space fragmentation and /sys/fs/btrfs/debug .
71c16b984cSDavid Sterba	  This has negative impact on performance.
726d49ba1bSEric Sandeen
736d49ba1bSEric Sandeen	  If unsure, say N.
742e17c7c6SJosef Bacik
752e17c7c6SJosef Bacikconfig BTRFS_ASSERT
762e17c7c6SJosef Bacik	bool "Btrfs assert support"
772e17c7c6SJosef Bacik	depends on BTRFS_FS
782e17c7c6SJosef Bacik	help
79c16b984cSDavid Sterba	  Enable run-time assertion checking. Additional safety checks are
80c16b984cSDavid Sterba	  done, simple enough not to affect performance but verify invariants
81c16b984cSDavid Sterba	  and assumptions of code to run properly. This may result in panics,
82c16b984cSDavid Sterba	  and is meant for developers but can be enabled in general.
832e17c7c6SJosef Bacik
842e17c7c6SJosef Bacik	  If unsure, say N.
85fd708b81SJosef Bacik
8667cd3f22SQu Wenruoconfig BTRFS_EXPERIMENTAL
8767cd3f22SQu Wenruo	bool "Btrfs experimental features"
8867cd3f22SQu Wenruo	depends on BTRFS_FS
8967cd3f22SQu Wenruo	default n
9067cd3f22SQu Wenruo	help
9167cd3f22SQu Wenruo	  Enable experimental features.  These features may not be stable enough
9267cd3f22SQu Wenruo	  for end users.  This is meant for btrfs developers or users who wish
9367cd3f22SQu Wenruo	  to test the functionality and report problems.
9467cd3f22SQu Wenruo
9567cd3f22SQu Wenruo	  Current list:
9667cd3f22SQu Wenruo
975f9b394eSDavid Sterba	  - COW fixup worker warning - last warning before removing the
985f9b394eSDavid Sterba				       functionality catching out-of-band page
995f9b394eSDavid Sterba				       dirtying, not necessary since 5.8
1005f9b394eSDavid Sterba
1015f9b394eSDavid Sterba	  - RAID mirror read policy - additional read policies for balancing
1025f9b394eSDavid Sterba				      reading from redundant block group
1035f9b394eSDavid Sterba				      profiles (currently: pid, round-robin,
1045f9b394eSDavid Sterba				      fixed devid)
10567cd3f22SQu Wenruo
10667cd3f22SQu Wenruo	  - send stream protocol v3 - fs-verity support
10767cd3f22SQu Wenruo
10867cd3f22SQu Wenruo	  - checksum offload mode - sysfs knob to affect when checksums are
10967cd3f22SQu Wenruo	                            calculated (at IO time, or in a thread)
11067cd3f22SQu Wenruo
11167cd3f22SQu Wenruo	  - raid-stripe-tree - additional mapping of extents to devices to
11267cd3f22SQu Wenruo			       support RAID1* profiles on zoned devices,
11367cd3f22SQu Wenruo			       RAID56 not yet supported
11467cd3f22SQu Wenruo
11567cd3f22SQu Wenruo	  - extent tree v2 - complex rework of extent tracking
11667cd3f22SQu Wenruo
117*cc38d178SQu Wenruo	  - large folio support
118*cc38d178SQu Wenruo
11967cd3f22SQu Wenruo	  If unsure, say N.
12067cd3f22SQu Wenruo
121fd708b81SJosef Bacikconfig BTRFS_FS_REF_VERIFY
122fd708b81SJosef Bacik	bool "Btrfs with the ref verify tool compiled in"
123fd708b81SJosef Bacik	depends on BTRFS_FS
124fd708b81SJosef Bacik	default n
125fd708b81SJosef Bacik	help
126fd708b81SJosef Bacik	  Enable run-time extent reference verification instrumentation.  This
127fd708b81SJosef Bacik	  is meant to be used by btrfs developers for tracking down extent
128fd708b81SJosef Bacik	  reference problems or verifying they didn't break something.
129fd708b81SJosef Bacik
130fd708b81SJosef Bacik	  If unsure, say N.
131