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 Currently this enables support for the trusted.* and 210 security.* 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 ARCH_SUPPORTS_HUGETLBFS 238 def_bool n 239 240config HUGETLBFS 241 bool "HugeTLB file system support" 242 depends on X86 || IA64 || SPARC64 || ARCH_SUPPORTS_HUGETLBFS || BROKEN 243 depends on (SYSFS || SYSCTL) 244 select MEMFD_CREATE 245 help 246 hugetlbfs is a filesystem backing for HugeTLB pages, based on 247 ramfs. For architectures that support it, say Y here and read 248 <file:Documentation/admin-guide/mm/hugetlbpage.rst> for details. 249 250 If unsure, say N. 251 252config HUGETLB_PAGE 253 def_bool HUGETLBFS 254 255config HUGETLB_PAGE_OPTIMIZE_VMEMMAP 256 def_bool HUGETLB_PAGE 257 depends on ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP 258 depends on SPARSEMEM_VMEMMAP 259 260config HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON 261 bool "HugeTLB Vmemmap Optimization (HVO) defaults to on" 262 default n 263 depends on HUGETLB_PAGE_OPTIMIZE_VMEMMAP 264 help 265 The HugeTLB VmemmapvOptimization (HVO) defaults to off. Say Y here to 266 enable HVO by default. It can be disabled via hugetlb_free_vmemmap=off 267 (boot command line) or hugetlb_optimize_vmemmap (sysctl). 268 269config ARCH_HAS_GIGANTIC_PAGE 270 bool 271 272source "fs/configfs/Kconfig" 273source "fs/efivarfs/Kconfig" 274 275endmenu 276 277menuconfig MISC_FILESYSTEMS 278 bool "Miscellaneous filesystems" 279 default y 280 help 281 Say Y here to get to see options for various miscellaneous 282 filesystems, such as filesystems that came from other 283 operating systems. 284 285 This option alone does not add any kernel code. 286 287 If you say N, all options in this submenu will be skipped and 288 disabled; if unsure, say Y here. 289 290if MISC_FILESYSTEMS 291 292source "fs/orangefs/Kconfig" 293source "fs/adfs/Kconfig" 294source "fs/affs/Kconfig" 295source "fs/ecryptfs/Kconfig" 296source "fs/hfs/Kconfig" 297source "fs/hfsplus/Kconfig" 298source "fs/befs/Kconfig" 299source "fs/bfs/Kconfig" 300source "fs/efs/Kconfig" 301source "fs/jffs2/Kconfig" 302# UBIFS File system configuration 303source "fs/ubifs/Kconfig" 304source "fs/cramfs/Kconfig" 305source "fs/squashfs/Kconfig" 306source "fs/freevxfs/Kconfig" 307source "fs/minix/Kconfig" 308source "fs/omfs/Kconfig" 309source "fs/hpfs/Kconfig" 310source "fs/qnx4/Kconfig" 311source "fs/qnx6/Kconfig" 312source "fs/romfs/Kconfig" 313source "fs/pstore/Kconfig" 314source "fs/sysv/Kconfig" 315source "fs/ufs/Kconfig" 316source "fs/erofs/Kconfig" 317source "fs/vboxsf/Kconfig" 318 319endif # MISC_FILESYSTEMS 320 321menuconfig NETWORK_FILESYSTEMS 322 bool "Network File Systems" 323 default y 324 depends on NET 325 help 326 Say Y here to get to see options for network filesystems and 327 filesystem-related networking code, such as NFS daemon and 328 RPCSEC security modules. 329 330 This option alone does not add any kernel code. 331 332 If you say N, all options in this submenu will be skipped and 333 disabled; if unsure, say Y here. 334 335if NETWORK_FILESYSTEMS 336 337source "fs/nfs/Kconfig" 338source "fs/nfsd/Kconfig" 339 340config GRACE_PERIOD 341 tristate 342 343config LOCKD 344 tristate 345 depends on FILE_LOCKING 346 select GRACE_PERIOD 347 348config LOCKD_V4 349 bool 350 depends on NFSD || NFS_V3 351 depends on FILE_LOCKING 352 default y 353 354config NFS_ACL_SUPPORT 355 tristate 356 select FS_POSIX_ACL 357 358config NFS_COMMON 359 bool 360 depends on NFSD || NFS_FS || LOCKD 361 default y 362 363config NFS_V4_2_SSC_HELPER 364 bool 365 default y if NFS_V4_2 366 367source "net/sunrpc/Kconfig" 368source "fs/ceph/Kconfig" 369 370source "fs/smb/Kconfig" 371source "fs/coda/Kconfig" 372source "fs/afs/Kconfig" 373source "fs/9p/Kconfig" 374 375endif # NETWORK_FILESYSTEMS 376 377source "fs/nls/Kconfig" 378source "fs/dlm/Kconfig" 379source "fs/unicode/Kconfig" 380 381config IO_WQ 382 bool 383 384endmenu 385