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