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