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