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 depends on (SYSFS || SYSCTL) 254 select MEMFD_CREATE 255 select PADATA if SMP 256 help 257 hugetlbfs is a filesystem backing for HugeTLB pages, based on 258 ramfs. For architectures that support it, say Y here and read 259 <file:Documentation/admin-guide/mm/hugetlbpage.rst> for details. 260 261 If unsure, say N. 262 263if HUGETLBFS 264config HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON 265 bool "HugeTLB Vmemmap Optimization (HVO) defaults to on" 266 default n 267 depends on HUGETLB_PAGE_OPTIMIZE_VMEMMAP 268 help 269 The HugeTLB Vmemmap Optimization (HVO) defaults to off. Say Y here to 270 enable HVO by default. It can be disabled via hugetlb_free_vmemmap=off 271 (boot command line) or hugetlb_optimize_vmemmap (sysctl). 272endif # HUGETLBFS 273 274config HUGETLB_PAGE 275 def_bool HUGETLBFS 276 select XARRAY_MULTI 277 278config HUGETLB_PAGE_OPTIMIZE_VMEMMAP 279 def_bool HUGETLB_PAGE 280 depends on ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP 281 depends on SPARSEMEM_VMEMMAP 282 select SPARSEMEM_VMEMMAP_PREINIT if ARCH_WANT_HUGETLB_VMEMMAP_PREINIT 283 284config HUGETLB_PMD_PAGE_TABLE_SHARING 285 def_bool HUGETLB_PAGE 286 depends on ARCH_WANT_HUGE_PMD_SHARE && SPLIT_PMD_PTLOCKS 287 288config ARCH_HAS_GIGANTIC_PAGE 289 bool 290 291source "fs/configfs/Kconfig" 292source "fs/efivarfs/Kconfig" 293 294endmenu 295 296menuconfig MISC_FILESYSTEMS 297 bool "Miscellaneous filesystems" 298 default y 299 help 300 Say Y here to get to see options for various miscellaneous 301 filesystems, such as filesystems that came from other 302 operating systems. 303 304 This option alone does not add any kernel code. 305 306 If you say N, all options in this submenu will be skipped and 307 disabled; if unsure, say Y here. 308 309if MISC_FILESYSTEMS 310 311source "fs/orangefs/Kconfig" 312source "fs/adfs/Kconfig" 313source "fs/affs/Kconfig" 314source "fs/ecryptfs/Kconfig" 315source "fs/hfs/Kconfig" 316source "fs/hfsplus/Kconfig" 317source "fs/befs/Kconfig" 318source "fs/bfs/Kconfig" 319source "fs/efs/Kconfig" 320source "fs/jffs2/Kconfig" 321# UBIFS File system configuration 322source "fs/ubifs/Kconfig" 323source "fs/cramfs/Kconfig" 324source "fs/squashfs/Kconfig" 325source "fs/freevxfs/Kconfig" 326source "fs/minix/Kconfig" 327source "fs/omfs/Kconfig" 328source "fs/hpfs/Kconfig" 329source "fs/qnx4/Kconfig" 330source "fs/qnx6/Kconfig" 331source "fs/resctrl/Kconfig" 332source "fs/romfs/Kconfig" 333source "fs/pstore/Kconfig" 334source "fs/ufs/Kconfig" 335source "fs/erofs/Kconfig" 336source "fs/vboxsf/Kconfig" 337 338endif # MISC_FILESYSTEMS 339 340menuconfig NETWORK_FILESYSTEMS 341 bool "Network File Systems" 342 default y 343 depends on NET 344 help 345 Say Y here to get to see options for network filesystems and 346 filesystem-related networking code, such as NFS daemon and 347 RPCSEC security modules. 348 349 This option alone does not add any kernel code. 350 351 If you say N, all options in this submenu will be skipped and 352 disabled; if unsure, say Y here. 353 354if NETWORK_FILESYSTEMS 355 356source "fs/nfs/Kconfig" 357source "fs/nfsd/Kconfig" 358 359config GRACE_PERIOD 360 tristate 361 362config LOCKD 363 tristate 364 depends on FILE_LOCKING 365 select CRC32 366 select GRACE_PERIOD 367 368config LOCKD_V4 369 bool 370 depends on NFSD || NFS_V3 371 depends on FILE_LOCKING 372 default y 373 374config NFS_ACL_SUPPORT 375 tristate 376 select FS_POSIX_ACL 377 378config NFS_COMMON 379 bool 380 depends on NFSD || NFS_FS || LOCKD 381 default y 382 383config NFS_COMMON_LOCALIO_SUPPORT 384 tristate 385 depends on NFS_LOCALIO 386 default y if NFSD=y || NFS_FS=y 387 default m if NFSD=m && NFS_FS=m 388 select SUNRPC 389 390config NFS_LOCALIO 391 bool "NFS client and server support for LOCALIO auxiliary protocol" 392 depends on NFSD && NFS_FS 393 select NFS_COMMON_LOCALIO_SUPPORT 394 default n 395 help 396 Some NFS servers support an auxiliary NFS LOCALIO protocol 397 that is not an official part of the NFS protocol. 398 399 This option enables support for the LOCALIO protocol in the 400 kernel's NFS server and client. Enable this to permit local 401 NFS clients to bypass the network when issuing reads and 402 writes to the local NFS server. 403 404 If unsure, say N. 405 406config NFS_V4_2_SSC_HELPER 407 bool 408 default y if NFS_V4_2 409 410source "net/sunrpc/Kconfig" 411source "fs/ceph/Kconfig" 412 413source "fs/smb/Kconfig" 414source "fs/coda/Kconfig" 415source "fs/afs/Kconfig" 416source "fs/9p/Kconfig" 417 418endif # NETWORK_FILESYSTEMS 419 420source "fs/nls/Kconfig" 421source "fs/dlm/Kconfig" 422source "fs/unicode/Kconfig" 423 424config IO_WQ 425 bool 426 427endmenu 428