xref: /linux/fs/Kconfig (revision 6389a62ff798e781567645c0b0ca3dd7b8a4289d)
1# SPDX-License-Identifier: GPL-2.0-only
2#
3# File system configuration
4#
5
6menu "File systems"
7
8# Use unaligned word dcache accesses
9config DCACHE_WORD_ACCESS
10       bool
11
12config VALIDATE_FS_PARSER
13	bool "Validate filesystem parameter description"
14	help
15	  Enable this to perform validation of the parameter description for a
16	  filesystem when it is registered.
17
18if BLOCK
19
20config FS_IOMAP
21	bool
22
23source "fs/ext2/Kconfig"
24source "fs/ext4/Kconfig"
25source "fs/jbd2/Kconfig"
26
27config FS_MBCACHE
28# Meta block cache for Extended Attributes (ext2/ext3/ext4)
29	tristate
30	default y if EXT2_FS=y && EXT2_FS_XATTR
31	default y if EXT4_FS=y
32	default m if EXT2_FS_XATTR || EXT4_FS
33
34source "fs/reiserfs/Kconfig"
35source "fs/jfs/Kconfig"
36
37source "fs/xfs/Kconfig"
38source "fs/gfs2/Kconfig"
39source "fs/ocfs2/Kconfig"
40source "fs/btrfs/Kconfig"
41source "fs/nilfs2/Kconfig"
42source "fs/f2fs/Kconfig"
43
44config FS_DAX
45	bool "Direct Access (DAX) support"
46	depends on MMU
47	depends on !(ARM || MIPS || SPARC)
48	select DEV_PAGEMAP_OPS if (ZONE_DEVICE && !FS_DAX_LIMITED)
49	select FS_IOMAP
50	select DAX
51	help
52	  Direct Access (DAX) can be used on memory-backed block devices.
53	  If the block device supports DAX and the filesystem supports DAX,
54	  then you can avoid using the pagecache to buffer I/Os.  Turning
55	  on this option will compile in support for DAX; you will need to
56	  mount the filesystem using the -o dax option.
57
58	  If you do not have a block device that is capable of using this,
59	  or if unsure, say N.  Saying Y will increase the size of the kernel
60	  by about 5kB.
61
62config FS_DAX_PMD
63	bool
64	default FS_DAX
65	depends on FS_DAX
66	depends on ZONE_DEVICE
67	depends on TRANSPARENT_HUGEPAGE
68
69# Selected by DAX drivers that do not expect filesystem DAX to support
70# get_user_pages() of DAX mappings. I.e. "limited" indicates no support
71# for fork() of processes with MAP_SHARED mappings or support for
72# direct-I/O to a DAX mapping.
73config FS_DAX_LIMITED
74	bool
75
76endif # BLOCK
77
78# Posix ACL utility routines
79#
80# Note: Posix ACLs can be implemented without these helpers.  Never use
81# this symbol for ifdefs in core code.
82#
83config FS_POSIX_ACL
84	def_bool n
85
86config EXPORTFS
87	tristate
88
89config EXPORTFS_BLOCK_OPS
90	bool "Enable filesystem export operations for block IO"
91	help
92	  This option enables the export operations for a filesystem to support
93	  external block IO.
94
95config FILE_LOCKING
96	bool "Enable POSIX file locking API" if EXPERT
97	default y
98	help
99	  This option enables standard file locking support, required
100          for filesystems like NFS and for the flock() system
101          call. Disabling this option saves about 11k.
102
103config MANDATORY_FILE_LOCKING
104	bool "Enable Mandatory file locking"
105	depends on FILE_LOCKING
106	default y
107	help
108	  This option enables files appropriately marked files on appropriely
109	  mounted filesystems to support mandatory locking.
110
111	  To the best of my knowledge this is dead code that no one cares about.
112
113source "fs/crypto/Kconfig"
114
115source "fs/notify/Kconfig"
116
117source "fs/quota/Kconfig"
118
119source "fs/autofs/Kconfig"
120source "fs/fuse/Kconfig"
121source "fs/overlayfs/Kconfig"
122
123menu "Caches"
124
125source "fs/fscache/Kconfig"
126source "fs/cachefiles/Kconfig"
127
128endmenu
129
130if BLOCK
131menu "CD-ROM/DVD Filesystems"
132
133source "fs/isofs/Kconfig"
134source "fs/udf/Kconfig"
135
136endmenu
137endif # BLOCK
138
139if BLOCK
140menu "DOS/FAT/NT Filesystems"
141
142source "fs/fat/Kconfig"
143source "fs/ntfs/Kconfig"
144
145endmenu
146endif # BLOCK
147
148menu "Pseudo filesystems"
149
150source "fs/proc/Kconfig"
151source "fs/kernfs/Kconfig"
152source "fs/sysfs/Kconfig"
153
154config TMPFS
155	bool "Tmpfs virtual memory file system support (former shm fs)"
156	depends on SHMEM
157	help
158	  Tmpfs is a file system which keeps all files in virtual memory.
159
160	  Everything in tmpfs is temporary in the sense that no files will be
161	  created on your hard drive. The files live in memory and swap
162	  space. If you unmount a tmpfs instance, everything stored therein is
163	  lost.
164
165	  See <file:Documentation/filesystems/tmpfs.txt> for details.
166
167config TMPFS_POSIX_ACL
168	bool "Tmpfs POSIX Access Control Lists"
169	depends on TMPFS
170	select TMPFS_XATTR
171	select FS_POSIX_ACL
172	help
173	  POSIX Access Control Lists (ACLs) support additional access rights
174	  for users and groups beyond the standard owner/group/world scheme,
175	  and this option selects support for ACLs specifically for tmpfs
176	  filesystems.
177
178	  If you've selected TMPFS, it's possible that you'll also need
179	  this option as there are a number of Linux distros that require
180	  POSIX ACL support under /dev for certain features to work properly.
181	  For example, some distros need this feature for ALSA-related /dev
182	  files for sound to work properly.  In short, if you're not sure,
183	  say Y.
184
185config TMPFS_XATTR
186	bool "Tmpfs extended attributes"
187	depends on TMPFS
188	default n
189	help
190	  Extended attributes are name:value pairs associated with inodes by
191	  the kernel or by users (see the attr(5) manual page for details).
192
193	  Currently this enables support for the trusted.* and
194	  security.* namespaces.
195
196	  You need this for POSIX ACL support on tmpfs.
197
198	  If unsure, say N.
199
200config HUGETLBFS
201	bool "HugeTLB file system support"
202	depends on X86 || IA64 || SPARC64 || (S390 && 64BIT) || \
203		   SYS_SUPPORTS_HUGETLBFS || BROKEN
204	help
205	  hugetlbfs is a filesystem backing for HugeTLB pages, based on
206	  ramfs. For architectures that support it, say Y here and read
207	  <file:Documentation/admin-guide/mm/hugetlbpage.rst> for details.
208
209	  If unsure, say N.
210
211config HUGETLB_PAGE
212	def_bool HUGETLBFS
213
214config MEMFD_CREATE
215	def_bool TMPFS || HUGETLBFS
216
217config ARCH_HAS_GIGANTIC_PAGE
218	bool
219
220source "fs/configfs/Kconfig"
221source "fs/efivarfs/Kconfig"
222
223endmenu
224
225menuconfig MISC_FILESYSTEMS
226	bool "Miscellaneous filesystems"
227	default y
228	---help---
229	  Say Y here to get to see options for various miscellaneous
230	  filesystems, such as filesystems that came from other
231	  operating systems.
232
233	  This option alone does not add any kernel code.
234
235	  If you say N, all options in this submenu will be skipped and
236	  disabled; if unsure, say Y here.
237
238if MISC_FILESYSTEMS
239
240source "fs/orangefs/Kconfig"
241source "fs/adfs/Kconfig"
242source "fs/affs/Kconfig"
243source "fs/ecryptfs/Kconfig"
244source "fs/hfs/Kconfig"
245source "fs/hfsplus/Kconfig"
246source "fs/befs/Kconfig"
247source "fs/bfs/Kconfig"
248source "fs/efs/Kconfig"
249source "fs/jffs2/Kconfig"
250# UBIFS File system configuration
251source "fs/ubifs/Kconfig"
252source "fs/cramfs/Kconfig"
253source "fs/squashfs/Kconfig"
254source "fs/freevxfs/Kconfig"
255source "fs/minix/Kconfig"
256source "fs/omfs/Kconfig"
257source "fs/hpfs/Kconfig"
258source "fs/qnx4/Kconfig"
259source "fs/qnx6/Kconfig"
260source "fs/romfs/Kconfig"
261source "fs/pstore/Kconfig"
262source "fs/sysv/Kconfig"
263source "fs/ufs/Kconfig"
264
265endif # MISC_FILESYSTEMS
266
267menuconfig NETWORK_FILESYSTEMS
268	bool "Network File Systems"
269	default y
270	depends on NET
271	---help---
272	  Say Y here to get to see options for network filesystems and
273	  filesystem-related networking code, such as NFS daemon and
274	  RPCSEC security modules.
275
276	  This option alone does not add any kernel code.
277
278	  If you say N, all options in this submenu will be skipped and
279	  disabled; if unsure, say Y here.
280
281if NETWORK_FILESYSTEMS
282
283source "fs/nfs/Kconfig"
284source "fs/nfsd/Kconfig"
285
286config GRACE_PERIOD
287	tristate
288
289config LOCKD
290	tristate
291	depends on FILE_LOCKING
292	select GRACE_PERIOD
293
294config LOCKD_V4
295	bool
296	depends on NFSD_V3 || NFS_V3
297	depends on FILE_LOCKING
298	default y
299
300config NFS_ACL_SUPPORT
301	tristate
302	select FS_POSIX_ACL
303
304config NFS_COMMON
305	bool
306	depends on NFSD || NFS_FS || LOCKD
307	default y
308
309source "net/sunrpc/Kconfig"
310source "fs/ceph/Kconfig"
311source "fs/cifs/Kconfig"
312source "fs/coda/Kconfig"
313source "fs/afs/Kconfig"
314source "fs/9p/Kconfig"
315
316endif # NETWORK_FILESYSTEMS
317
318source "fs/nls/Kconfig"
319source "fs/dlm/Kconfig"
320source "fs/unicode/Kconfig"
321
322endmenu
323