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