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