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