xref: /linux/fs/btrfs/Kconfig (revision 6f7e6393d1ce636bb7ec77a7fe7b77458fddf701)
1# SPDX-License-Identifier: GPL-2.0
2
3config BTRFS_FS
4	tristate "Btrfs filesystem support"
5	select BLK_CGROUP_PUNT_BIO
6	select CRC32
7	select CRYPTO_LIB_BLAKE2B
8	select CRYPTO_LIB_SHA256
9	select ZLIB_INFLATE
10	select ZLIB_DEFLATE
11	select LZO_COMPRESS
12	select LZO_DECOMPRESS
13	select ZSTD_COMPRESS
14	select ZSTD_DECOMPRESS
15	select FS_IOMAP
16	select RAID6_PQ
17	select XOR_BLOCKS
18	select XXHASH
19	depends on PAGE_SIZE_LESS_THAN_256KB
20
21	help
22	  Btrfs is a general purpose copy-on-write filesystem with extents,
23	  writable snapshotting, support for multiple devices and many more
24	  features focused on fault tolerance, repair and easy administration.
25
26	  The filesystem disk format is no longer unstable, and it's not
27	  expected to change unless there are strong reasons to do so. If there
28	  is a format change, file systems with a unchanged format will
29	  continue to be mountable and usable by newer kernels.
30
31	  For more information, please see the web pages at
32	  https://btrfs.readthedocs.io
33
34	  To compile this file system support as a module, choose M here. The
35	  module will be called btrfs.
36
37	  If unsure, say N.
38
39config BTRFS_FS_POSIX_ACL
40	bool "Btrfs POSIX Access Control Lists"
41	depends on BTRFS_FS
42	select FS_POSIX_ACL
43	help
44	  POSIX Access Control Lists (ACLs) support permissions for users and
45	  groups beyond the owner/group/world scheme.
46
47	  If you don't know what Access Control Lists are, say N
48
49config BTRFS_FS_RUN_SANITY_TESTS
50	bool "Btrfs will run sanity tests upon loading"
51	depends on BTRFS_FS
52	help
53	  This will run sanity tests for core functionality like free space,
54	  extent maps, extent io, extent buffers, inodes, qgroups and others,
55	  at module load time.  These are mostly regression tests and are only
56	  interesting to developers.
57
58	  If unsure, say N.
59
60config BTRFS_DEBUG
61	bool "Btrfs debugging support"
62	depends on BTRFS_FS
63	select REF_TRACKER if STACKTRACE_SUPPORT
64	help
65	  Enable run-time debugging support for the btrfs filesystem.
66
67	  Additional potentially expensive checks, debugging functionality or
68	  sysfs exported information is enabled, like leak checks of internal
69	  objects, optional forced space fragmentation and /sys/fs/btrfs/debug .
70	  This has negative impact on performance.
71
72	  If unsure, say N.
73
74config BTRFS_ASSERT
75	bool "Btrfs assert support"
76	depends on BTRFS_FS
77	help
78	  Enable run-time assertion checking. Additional safety checks are
79	  done, simple enough not to affect performance but verify invariants
80	  and assumptions of code to run properly. This may result in panics,
81	  and is meant for developers but can be enabled in general.
82
83	  If unsure, say N.
84
85config BTRFS_EXPERIMENTAL
86	bool "Btrfs experimental features"
87	depends on BTRFS_FS
88	default n
89	help
90	  Enable experimental features.  These features may not be stable enough
91	  for end users.  This is meant for btrfs developers or users who wish
92	  to test the functionality and report problems.
93
94	  Current list:
95
96	  - COW fixup worker warning - last warning before removing the
97				       functionality catching out-of-band page
98				       dirtying, not necessary since 5.8
99
100	  - RAID mirror read policy - additional read policies for balancing
101				      reading from redundant block group
102				      profiles (currently: pid, round-robin,
103				      fixed devid)
104
105	  - send stream protocol v3 - fs-verity support
106
107	  - raid-stripe-tree - additional mapping of extents to devices to
108			       support RAID1* profiles on zoned devices,
109			       RAID56 not yet supported
110
111	  - extent tree v2 - complex rework of extent tracking
112
113	  - large folio and block size (> page size) support
114
115	  - shutdown ioctl and auto-degradation support
116
117	  - asynchronous checksum generation for data writes
118
119	  - remap-tree - logical address remapping tree
120
121	  If unsure, say N.
122