xref: /linux/fs/Kconfig (revision f8d87ed9f0d546ac5b05e8e7d2b148d4b77599fa)
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"
43source "fs/zonefs/Kconfig"
44
45config FS_DAX
46	bool "Direct Access (DAX) support"
47	depends on MMU
48	depends on !(ARM || MIPS || SPARC)
49	select DEV_PAGEMAP_OPS if (ZONE_DEVICE && !FS_DAX_LIMITED)
50	select FS_IOMAP
51	select DAX
52	help
53	  Direct Access (DAX) can be used on memory-backed block devices.
54	  If the block device supports DAX and the filesystem supports DAX,
55	  then you can avoid using the pagecache to buffer I/Os.  Turning
56	  on this option will compile in support for DAX; you will need to
57	  mount the filesystem using the -o dax option.
58
59	  If you do not have a block device that is capable of using this,
60	  or if unsure, say N.  Saying Y will increase the size of the kernel
61	  by about 5kB.
62
63config FS_DAX_PMD
64	bool
65	default FS_DAX
66	depends on FS_DAX
67	depends on ZONE_DEVICE
68	depends on TRANSPARENT_HUGEPAGE
69
70# Selected by DAX drivers that do not expect filesystem DAX to support
71# get_user_pages() of DAX mappings. I.e. "limited" indicates no support
72# for fork() of processes with MAP_SHARED mappings or support for
73# direct-I/O to a DAX mapping.
74config FS_DAX_LIMITED
75	bool
76
77endif # BLOCK
78
79# Posix ACL utility routines
80#
81# Note: Posix ACLs can be implemented without these helpers.  Never use
82# this symbol for ifdefs in core code.
83#
84config FS_POSIX_ACL
85	def_bool n
86
87config EXPORTFS
88	tristate
89
90config EXPORTFS_BLOCK_OPS
91	bool "Enable filesystem export operations for block IO"
92	help
93	  This option enables the export operations for a filesystem to support
94	  external block IO.
95
96config FILE_LOCKING
97	bool "Enable POSIX file locking API" if EXPERT
98	default y
99	help
100	  This option enables standard file locking support, required
101          for filesystems like NFS and for the flock() system
102          call. Disabling this option saves about 11k.
103
104config MANDATORY_FILE_LOCKING
105	bool "Enable Mandatory file locking"
106	depends on FILE_LOCKING
107	default y
108	help
109	  This option enables files appropriately marked files on appropriely
110	  mounted filesystems to support mandatory locking.
111
112	  To the best of my knowledge this is dead code that no one cares about.
113
114source "fs/crypto/Kconfig"
115
116source "fs/verity/Kconfig"
117
118source "fs/notify/Kconfig"
119
120source "fs/quota/Kconfig"
121
122source "fs/autofs/Kconfig"
123source "fs/fuse/Kconfig"
124source "fs/overlayfs/Kconfig"
125
126menu "Caches"
127
128source "fs/netfs/Kconfig"
129source "fs/fscache/Kconfig"
130source "fs/cachefiles/Kconfig"
131
132endmenu
133
134if BLOCK
135menu "CD-ROM/DVD Filesystems"
136
137source "fs/isofs/Kconfig"
138source "fs/udf/Kconfig"
139
140endmenu
141endif # BLOCK
142
143if BLOCK
144menu "DOS/FAT/EXFAT/NT Filesystems"
145
146source "fs/fat/Kconfig"
147source "fs/exfat/Kconfig"
148source "fs/ntfs/Kconfig"
149source "fs/ntfs3/Kconfig"
150
151endmenu
152endif # BLOCK
153
154menu "Pseudo filesystems"
155
156source "fs/proc/Kconfig"
157source "fs/kernfs/Kconfig"
158source "fs/sysfs/Kconfig"
159
160config TMPFS
161	bool "Tmpfs virtual memory file system support (former shm fs)"
162	depends on SHMEM
163	help
164	  Tmpfs is a file system which keeps all files in virtual memory.
165
166	  Everything in tmpfs is temporary in the sense that no files will be
167	  created on your hard drive. The files live in memory and swap
168	  space. If you unmount a tmpfs instance, everything stored therein is
169	  lost.
170
171	  See <file:Documentation/filesystems/tmpfs.rst> for details.
172
173config TMPFS_POSIX_ACL
174	bool "Tmpfs POSIX Access Control Lists"
175	depends on TMPFS
176	select TMPFS_XATTR
177	select FS_POSIX_ACL
178	help
179	  POSIX Access Control Lists (ACLs) support additional access rights
180	  for users and groups beyond the standard owner/group/world scheme,
181	  and this option selects support for ACLs specifically for tmpfs
182	  filesystems.
183
184	  If you've selected TMPFS, it's possible that you'll also need
185	  this option as there are a number of Linux distros that require
186	  POSIX ACL support under /dev for certain features to work properly.
187	  For example, some distros need this feature for ALSA-related /dev
188	  files for sound to work properly.  In short, if you're not sure,
189	  say Y.
190
191config TMPFS_XATTR
192	bool "Tmpfs extended attributes"
193	depends on TMPFS
194	default n
195	help
196	  Extended attributes are name:value pairs associated with inodes by
197	  the kernel or by users (see the attr(5) manual page for details).
198
199	  Currently this enables support for the trusted.* and
200	  security.* namespaces.
201
202	  You need this for POSIX ACL support on tmpfs.
203
204	  If unsure, say N.
205
206config TMPFS_INODE64
207	bool "Use 64-bit ino_t by default in tmpfs"
208	depends on TMPFS && 64BIT
209	default n
210	help
211	  tmpfs has historically used only inode numbers as wide as an unsigned
212	  int. In some cases this can cause wraparound, potentially resulting
213	  in multiple files with the same inode number on a single device. This
214	  option makes tmpfs use the full width of ino_t by default, without
215	  needing to specify the inode64 option when mounting.
216
217	  But if a long-lived tmpfs is to be accessed by 32-bit applications so
218	  ancient that opening a file larger than 2GiB fails with EINVAL, then
219	  the INODE64 config option and inode64 mount option risk operations
220	  failing with EOVERFLOW once 33-bit inode numbers are reached.
221
222	  To override this configured default, use the inode32 or inode64
223	  option when mounting.
224
225	  If unsure, say N.
226
227config ARCH_SUPPORTS_HUGETLBFS
228	def_bool n
229
230config HUGETLBFS
231	bool "HugeTLB file system support"
232	depends on X86 || IA64 || SPARC64 || (S390 && 64BIT) || \
233		   ARCH_SUPPORTS_HUGETLBFS || BROKEN
234	help
235	  hugetlbfs is a filesystem backing for HugeTLB pages, based on
236	  ramfs. For architectures that support it, say Y here and read
237	  <file:Documentation/admin-guide/mm/hugetlbpage.rst> for details.
238
239	  If unsure, say N.
240
241config HUGETLB_PAGE
242	def_bool HUGETLBFS
243
244config HUGETLB_PAGE_FREE_VMEMMAP
245	def_bool HUGETLB_PAGE
246	depends on X86_64
247	depends on SPARSEMEM_VMEMMAP
248
249config HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON
250	bool "Default freeing vmemmap pages of HugeTLB to on"
251	default n
252	depends on HUGETLB_PAGE_FREE_VMEMMAP
253	help
254	  When using HUGETLB_PAGE_FREE_VMEMMAP, the freeing unused vmemmap
255	  pages associated with each HugeTLB page is default off. Say Y here
256	  to enable freeing vmemmap pages of HugeTLB by default. It can then
257	  be disabled on the command line via hugetlb_free_vmemmap=off.
258
259config MEMFD_CREATE
260	def_bool TMPFS || HUGETLBFS
261
262config ARCH_HAS_GIGANTIC_PAGE
263	bool
264
265source "fs/configfs/Kconfig"
266source "fs/efivarfs/Kconfig"
267
268endmenu
269
270menuconfig MISC_FILESYSTEMS
271	bool "Miscellaneous filesystems"
272	default y
273	help
274	  Say Y here to get to see options for various miscellaneous
275	  filesystems, such as filesystems that came from other
276	  operating systems.
277
278	  This option alone does not add any kernel code.
279
280	  If you say N, all options in this submenu will be skipped and
281	  disabled; if unsure, say Y here.
282
283if MISC_FILESYSTEMS
284
285source "fs/orangefs/Kconfig"
286source "fs/adfs/Kconfig"
287source "fs/affs/Kconfig"
288source "fs/ecryptfs/Kconfig"
289source "fs/hfs/Kconfig"
290source "fs/hfsplus/Kconfig"
291source "fs/befs/Kconfig"
292source "fs/bfs/Kconfig"
293source "fs/efs/Kconfig"
294source "fs/jffs2/Kconfig"
295# UBIFS File system configuration
296source "fs/ubifs/Kconfig"
297source "fs/cramfs/Kconfig"
298source "fs/squashfs/Kconfig"
299source "fs/freevxfs/Kconfig"
300source "fs/minix/Kconfig"
301source "fs/omfs/Kconfig"
302source "fs/hpfs/Kconfig"
303source "fs/qnx4/Kconfig"
304source "fs/qnx6/Kconfig"
305source "fs/romfs/Kconfig"
306source "fs/pstore/Kconfig"
307source "fs/sysv/Kconfig"
308source "fs/ufs/Kconfig"
309source "fs/erofs/Kconfig"
310source "fs/vboxsf/Kconfig"
311
312endif # MISC_FILESYSTEMS
313
314menuconfig NETWORK_FILESYSTEMS
315	bool "Network File Systems"
316	default y
317	depends on NET
318	help
319	  Say Y here to get to see options for network filesystems and
320	  filesystem-related networking code, such as NFS daemon and
321	  RPCSEC security modules.
322
323	  This option alone does not add any kernel code.
324
325	  If you say N, all options in this submenu will be skipped and
326	  disabled; if unsure, say Y here.
327
328if NETWORK_FILESYSTEMS
329
330source "fs/nfs/Kconfig"
331source "fs/nfsd/Kconfig"
332
333config GRACE_PERIOD
334	tristate
335
336config LOCKD
337	tristate
338	depends on FILE_LOCKING
339	select GRACE_PERIOD
340
341config LOCKD_V4
342	bool
343	depends on NFSD_V3 || NFS_V3
344	depends on FILE_LOCKING
345	default y
346
347config NFS_ACL_SUPPORT
348	tristate
349	select FS_POSIX_ACL
350
351config NFS_COMMON
352	bool
353	depends on NFSD || NFS_FS || LOCKD
354	default y
355
356config NFS_V4_2_SSC_HELPER
357	bool
358	default y if NFS_V4_2
359
360source "net/sunrpc/Kconfig"
361source "fs/ceph/Kconfig"
362source "fs/cifs/Kconfig"
363source "fs/coda/Kconfig"
364source "fs/afs/Kconfig"
365source "fs/9p/Kconfig"
366
367endif # NETWORK_FILESYSTEMS
368
369source "fs/nls/Kconfig"
370source "fs/dlm/Kconfig"
371source "fs/unicode/Kconfig"
372
373config IO_WQ
374	bool
375
376endmenu
377