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