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# old blockdev_direct_IO implementation. Use iomap for new code instead 22config LEGACY_DIRECT_IO 23 bool 24 25if BLOCK 26 27source "fs/ext2/Kconfig" 28source "fs/ext4/Kconfig" 29source "fs/jbd2/Kconfig" 30 31config 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 38source "fs/reiserfs/Kconfig" 39source "fs/jfs/Kconfig" 40 41source "fs/xfs/Kconfig" 42source "fs/gfs2/Kconfig" 43source "fs/ocfs2/Kconfig" 44source "fs/btrfs/Kconfig" 45source "fs/nilfs2/Kconfig" 46source "fs/f2fs/Kconfig" 47source "fs/zonefs/Kconfig" 48 49endif # BLOCK 50 51config 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 84config 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. 95config 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# 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/fscache/Kconfig" 139source "fs/cachefiles/Kconfig" 140 141endmenu 142 143if BLOCK 144menu "CD-ROM/DVD Filesystems" 145 146source "fs/isofs/Kconfig" 147source "fs/udf/Kconfig" 148 149endmenu 150endif # BLOCK 151 152if BLOCK 153menu "DOS/FAT/EXFAT/NT Filesystems" 154 155source "fs/fat/Kconfig" 156source "fs/exfat/Kconfig" 157source "fs/ntfs/Kconfig" 158source "fs/ntfs3/Kconfig" 159 160endmenu 161endif # BLOCK 162 163menu "Pseudo filesystems" 164 165source "fs/proc/Kconfig" 166source "fs/kernfs/Kconfig" 167source "fs/sysfs/Kconfig" 168 169config TMPFS 170 bool "Tmpfs virtual memory file system support (former shm fs)" 171 depends on SHMEM 172 select MEMFD_CREATE 173 help 174 Tmpfs is a file system which keeps all files in virtual memory. 175 176 Everything in tmpfs is temporary in the sense that no files will be 177 created on your hard drive. The files live in memory and swap 178 space. If you unmount a tmpfs instance, everything stored therein is 179 lost. 180 181 See <file:Documentation/filesystems/tmpfs.rst> for details. 182 183config TMPFS_POSIX_ACL 184 bool "Tmpfs POSIX Access Control Lists" 185 depends on TMPFS 186 select TMPFS_XATTR 187 select FS_POSIX_ACL 188 help 189 POSIX Access Control Lists (ACLs) support additional access rights 190 for users and groups beyond the standard owner/group/world scheme, 191 and this option selects support for ACLs specifically for tmpfs 192 filesystems. 193 194 If you've selected TMPFS, it's possible that you'll also need 195 this option as there are a number of Linux distros that require 196 POSIX ACL support under /dev for certain features to work properly. 197 For example, some distros need this feature for ALSA-related /dev 198 files for sound to work properly. In short, if you're not sure, 199 say Y. 200 201config TMPFS_XATTR 202 bool "Tmpfs extended attributes" 203 depends on TMPFS 204 default n 205 help 206 Extended attributes are name:value pairs associated with inodes by 207 the kernel or by users (see the attr(5) manual page for details). 208 209 This enables support for the trusted.*, security.* and user.* 210 namespaces. 211 212 You need this for POSIX ACL support on tmpfs. 213 214 If unsure, say N. 215 216config TMPFS_INODE64 217 bool "Use 64-bit ino_t by default in tmpfs" 218 depends on TMPFS && 64BIT 219 default n 220 help 221 tmpfs has historically used only inode numbers as wide as an unsigned 222 int. In some cases this can cause wraparound, potentially resulting 223 in multiple files with the same inode number on a single device. This 224 option makes tmpfs use the full width of ino_t by default, without 225 needing to specify the inode64 option when mounting. 226 227 But if a long-lived tmpfs is to be accessed by 32-bit applications so 228 ancient that opening a file larger than 2GiB fails with EINVAL, then 229 the INODE64 config option and inode64 mount option risk operations 230 failing with EOVERFLOW once 33-bit inode numbers are reached. 231 232 To override this configured default, use the inode32 or inode64 233 option when mounting. 234 235 If unsure, say N. 236 237config TMPFS_QUOTA 238 bool "Tmpfs quota support" 239 depends on TMPFS 240 select QUOTA 241 help 242 Quota support allows to set per user and group limits for tmpfs 243 usage. Say Y to enable quota support. Once enabled you can control 244 user and group quota enforcement with quota, usrquota and grpquota 245 mount options. 246 247 If unsure, say N. 248 249config ARCH_SUPPORTS_HUGETLBFS 250 def_bool n 251 252config HUGETLBFS 253 bool "HugeTLB file system support" 254 depends on X86 || IA64 || SPARC64 || ARCH_SUPPORTS_HUGETLBFS || BROKEN 255 depends on (SYSFS || SYSCTL) 256 select MEMFD_CREATE 257 help 258 hugetlbfs is a filesystem backing for HugeTLB pages, based on 259 ramfs. For architectures that support it, say Y here and read 260 <file:Documentation/admin-guide/mm/hugetlbpage.rst> for details. 261 262 If unsure, say N. 263 264config HUGETLB_PAGE 265 def_bool HUGETLBFS 266 267config HUGETLB_PAGE_OPTIMIZE_VMEMMAP 268 def_bool HUGETLB_PAGE 269 depends on ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP 270 depends on SPARSEMEM_VMEMMAP 271 272config HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON 273 bool "HugeTLB Vmemmap Optimization (HVO) defaults to on" 274 default n 275 depends on HUGETLB_PAGE_OPTIMIZE_VMEMMAP 276 help 277 The HugeTLB VmemmapvOptimization (HVO) defaults to off. Say Y here to 278 enable HVO by default. It can be disabled via hugetlb_free_vmemmap=off 279 (boot command line) or hugetlb_optimize_vmemmap (sysctl). 280 281config ARCH_HAS_GIGANTIC_PAGE 282 bool 283 284source "fs/configfs/Kconfig" 285source "fs/efivarfs/Kconfig" 286 287endmenu 288 289menuconfig MISC_FILESYSTEMS 290 bool "Miscellaneous filesystems" 291 default y 292 help 293 Say Y here to get to see options for various miscellaneous 294 filesystems, such as filesystems that came from other 295 operating systems. 296 297 This option alone does not add any kernel code. 298 299 If you say N, all options in this submenu will be skipped and 300 disabled; if unsure, say Y here. 301 302if MISC_FILESYSTEMS 303 304source "fs/orangefs/Kconfig" 305source "fs/adfs/Kconfig" 306source "fs/affs/Kconfig" 307source "fs/ecryptfs/Kconfig" 308source "fs/hfs/Kconfig" 309source "fs/hfsplus/Kconfig" 310source "fs/befs/Kconfig" 311source "fs/bfs/Kconfig" 312source "fs/efs/Kconfig" 313source "fs/jffs2/Kconfig" 314# UBIFS File system configuration 315source "fs/ubifs/Kconfig" 316source "fs/cramfs/Kconfig" 317source "fs/squashfs/Kconfig" 318source "fs/freevxfs/Kconfig" 319source "fs/minix/Kconfig" 320source "fs/omfs/Kconfig" 321source "fs/hpfs/Kconfig" 322source "fs/qnx4/Kconfig" 323source "fs/qnx6/Kconfig" 324source "fs/romfs/Kconfig" 325source "fs/pstore/Kconfig" 326source "fs/sysv/Kconfig" 327source "fs/ufs/Kconfig" 328source "fs/erofs/Kconfig" 329source "fs/vboxsf/Kconfig" 330 331endif # MISC_FILESYSTEMS 332 333menuconfig NETWORK_FILESYSTEMS 334 bool "Network File Systems" 335 default y 336 depends on NET 337 help 338 Say Y here to get to see options for network filesystems and 339 filesystem-related networking code, such as NFS daemon and 340 RPCSEC security modules. 341 342 This option alone does not add any kernel code. 343 344 If you say N, all options in this submenu will be skipped and 345 disabled; if unsure, say Y here. 346 347if NETWORK_FILESYSTEMS 348 349source "fs/nfs/Kconfig" 350source "fs/nfsd/Kconfig" 351 352config GRACE_PERIOD 353 tristate 354 355config LOCKD 356 tristate 357 depends on FILE_LOCKING 358 select GRACE_PERIOD 359 360config LOCKD_V4 361 bool 362 depends on NFSD || NFS_V3 363 depends on FILE_LOCKING 364 default y 365 366config NFS_ACL_SUPPORT 367 tristate 368 select FS_POSIX_ACL 369 370config NFS_COMMON 371 bool 372 depends on NFSD || NFS_FS || LOCKD 373 default y 374 375config NFS_V4_2_SSC_HELPER 376 bool 377 default y if NFS_V4_2 378 379source "net/sunrpc/Kconfig" 380source "fs/ceph/Kconfig" 381 382source "fs/smb/Kconfig" 383source "fs/coda/Kconfig" 384source "fs/afs/Kconfig" 385source "fs/9p/Kconfig" 386 387endif # NETWORK_FILESYSTEMS 388 389source "fs/nls/Kconfig" 390source "fs/dlm/Kconfig" 391source "fs/unicode/Kconfig" 392 393config IO_WQ 394 bool 395 396endmenu 397