1# SPDX-License-Identifier: GPL-2.0
2
3config BTRFS_FS
4	tristate "Btrfs filesystem support"
5	select CRYPTO
6	select CRYPTO_CRC32C
7	select LIBCRC32C
8	select CRYPTO_XXHASH
9	select CRYPTO_SHA256
10	select CRYPTO_BLAKE2B
11	select ZLIB_INFLATE
12	select ZLIB_DEFLATE
13	select LZO_COMPRESS
14	select LZO_DECOMPRESS
15	select ZSTD_COMPRESS
16	select ZSTD_DECOMPRESS
17	select FS_IOMAP
18	select RAID6_PQ
19	select XOR_BLOCKS
20	select SRCU
21	depends on !PPC_256K_PAGES	# powerpc
22	depends on !PAGE_SIZE_256KB	# hexagon
23
24	help
25	  Btrfs is a general purpose copy-on-write filesystem with extents,
26	  writable snapshotting, support for multiple devices and many more
27	  features focused on fault tolerance, repair and easy administration.
28
29	  The filesystem disk format is no longer unstable, and it's not
30	  expected to change unless there are strong reasons to do so. If there
31	  is a format change, file systems with a unchanged format will
32	  continue to be mountable and usable by newer kernels.
33
34	  For more information, please see the web pages at
35	  http://btrfs.wiki.kernel.org.
36
37	  To compile this file system support as a module, choose M here. The
38	  module will be called btrfs.
39
40	  If unsure, say N.
41
42config BTRFS_FS_POSIX_ACL
43	bool "Btrfs POSIX Access Control Lists"
44	depends on BTRFS_FS
45	select FS_POSIX_ACL
46	help
47	  POSIX Access Control Lists (ACLs) support permissions for users and
48	  groups beyond the owner/group/world scheme.
49
50	  If you don't know what Access Control Lists are, say N
51
52config BTRFS_FS_CHECK_INTEGRITY
53	bool "Btrfs with integrity check tool compiled in (DANGEROUS)"
54	depends on BTRFS_FS
55	help
56	  Adds code that examines all block write requests (including
57	  writes of the super block). The goal is to verify that the
58	  state of the filesystem on disk is always consistent, i.e.,
59	  after a power-loss or kernel panic event the filesystem is
60	  in a consistent state.
61
62	  If the integrity check tool is included and activated in
63	  the mount options, plenty of kernel memory is used, and
64	  plenty of additional CPU cycles are spent. Enabling this
65	  functionality is not intended for normal use.
66
67	  In most cases, unless you are a btrfs developer who needs
68	  to verify the integrity of (super)-block write requests
69	  during the run of a regression test, say N
70
71config BTRFS_FS_RUN_SANITY_TESTS
72	bool "Btrfs will run sanity tests upon loading"
73	depends on BTRFS_FS
74	help
75	  This will run some basic sanity tests on the free space cache
76	  code to make sure it is acting as it should.  These are mostly
77	  regression tests and are only really interesting to btrfs
78	  developers.
79
80	  If unsure, say N.
81
82config BTRFS_DEBUG
83	bool "Btrfs debugging support"
84	depends on BTRFS_FS
85	help
86	  Enable run-time debugging support for the btrfs filesystem. This may
87	  enable additional and expensive checks with negative impact on
88	  performance, or export extra information via sysfs.
89
90	  If unsure, say N.
91
92config BTRFS_ASSERT
93	bool "Btrfs assert support"
94	depends on BTRFS_FS
95	help
96	  Enable run-time assertion checking.  This will result in panics if
97	  any of the assertions trip.  This is meant for btrfs developers only.
98
99	  If unsure, say N.
100
101config BTRFS_FS_REF_VERIFY
102	bool "Btrfs with the ref verify tool compiled in"
103	depends on BTRFS_FS
104	default n
105	help
106	  Enable run-time extent reference verification instrumentation.  This
107	  is meant to be used by btrfs developers for tracking down extent
108	  reference problems or verifying they didn't break something.
109
110	  If unsure, say N.
111