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