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