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