0001 # SPDX-License-Identifier: GPL-2.0-only
0002 #
0003 # File system configuration
0004 #
0005
0006 menu "File systems"
0007
0008 # Use unaligned word dcache accesses
0009 config DCACHE_WORD_ACCESS
0010 bool
0011
0012 config VALIDATE_FS_PARSER
0013 bool "Validate filesystem parameter description"
0014 help
0015 Enable this to perform validation of the parameter description for a
0016 filesystem when it is registered.
0017
0018 config FS_IOMAP
0019 bool
0020
0021 if BLOCK
0022
0023 source "fs/ext2/Kconfig"
0024 source "fs/ext4/Kconfig"
0025 source "fs/jbd2/Kconfig"
0026
0027 config FS_MBCACHE
0028 # Meta block cache for Extended Attributes (ext2/ext3/ext4)
0029 tristate
0030 default y if EXT2_FS=y && EXT2_FS_XATTR
0031 default y if EXT4_FS=y
0032 default m if EXT2_FS_XATTR || EXT4_FS
0033
0034 source "fs/reiserfs/Kconfig"
0035 source "fs/jfs/Kconfig"
0036
0037 source "fs/xfs/Kconfig"
0038 source "fs/gfs2/Kconfig"
0039 source "fs/ocfs2/Kconfig"
0040 source "fs/btrfs/Kconfig"
0041 source "fs/nilfs2/Kconfig"
0042 source "fs/f2fs/Kconfig"
0043 source "fs/zonefs/Kconfig"
0044
0045 endif # BLOCK
0046
0047 config FS_DAX
0048 bool "File system based Direct Access (DAX) support"
0049 depends on MMU
0050 depends on !(ARM || MIPS || SPARC)
0051 depends on ZONE_DEVICE || FS_DAX_LIMITED
0052 select FS_IOMAP
0053 select DAX
0054 help
0055 Direct Access (DAX) can be used on memory-backed block devices.
0056 If the block device supports DAX and the filesystem supports DAX,
0057 then you can avoid using the pagecache to buffer I/Os. Turning
0058 on this option will compile in support for DAX.
0059
0060 For a DAX device to support file system access it needs to have
0061 struct pages. For the nfit based NVDIMMs this can be enabled
0062 using the ndctl utility:
0063
0064 # ndctl create-namespace --force --reconfig=namespace0.0 \
0065 --mode=fsdax --map=mem
0066
0067 See the 'create-namespace' man page for details on the overhead of
0068 --map=mem:
0069 https://docs.pmem.io/ndctl-user-guide/ndctl-man-pages/ndctl-create-namespace
0070
0071 For ndctl to work CONFIG_DEV_DAX needs to be enabled as well. For most
0072 file systems DAX support needs to be manually enabled globally or
0073 per-inode using a mount option as well. See the file documentation in
0074 Documentation/filesystems/dax.rst for details.
0075
0076 If you do not have a block device that is capable of using this,
0077 or if unsure, say N. Saying Y will increase the size of the kernel
0078 by about 5kB.
0079
0080 config FS_DAX_PMD
0081 bool
0082 default FS_DAX
0083 depends on FS_DAX
0084 depends on ZONE_DEVICE
0085 depends on TRANSPARENT_HUGEPAGE
0086
0087 # Selected by DAX drivers that do not expect filesystem DAX to support
0088 # get_user_pages() of DAX mappings. I.e. "limited" indicates no support
0089 # for fork() of processes with MAP_SHARED mappings or support for
0090 # direct-I/O to a DAX mapping.
0091 config FS_DAX_LIMITED
0092 bool
0093
0094 # Posix ACL utility routines
0095 #
0096 # Note: Posix ACLs can be implemented without these helpers. Never use
0097 # this symbol for ifdefs in core code.
0098 #
0099 config FS_POSIX_ACL
0100 def_bool n
0101
0102 config EXPORTFS
0103 tristate
0104
0105 config EXPORTFS_BLOCK_OPS
0106 bool "Enable filesystem export operations for block IO"
0107 help
0108 This option enables the export operations for a filesystem to support
0109 external block IO.
0110
0111 config FILE_LOCKING
0112 bool "Enable POSIX file locking API" if EXPERT
0113 default y
0114 help
0115 This option enables standard file locking support, required
0116 for filesystems like NFS and for the flock() system
0117 call. Disabling this option saves about 11k.
0118
0119 source "fs/crypto/Kconfig"
0120
0121 source "fs/verity/Kconfig"
0122
0123 source "fs/notify/Kconfig"
0124
0125 source "fs/quota/Kconfig"
0126
0127 source "fs/autofs/Kconfig"
0128 source "fs/fuse/Kconfig"
0129 source "fs/overlayfs/Kconfig"
0130
0131 menu "Caches"
0132
0133 source "fs/netfs/Kconfig"
0134 source "fs/fscache/Kconfig"
0135 source "fs/cachefiles/Kconfig"
0136
0137 endmenu
0138
0139 if BLOCK
0140 menu "CD-ROM/DVD Filesystems"
0141
0142 source "fs/isofs/Kconfig"
0143 source "fs/udf/Kconfig"
0144
0145 endmenu
0146 endif # BLOCK
0147
0148 if BLOCK
0149 menu "DOS/FAT/EXFAT/NT Filesystems"
0150
0151 source "fs/fat/Kconfig"
0152 source "fs/exfat/Kconfig"
0153 source "fs/ntfs/Kconfig"
0154 source "fs/ntfs3/Kconfig"
0155
0156 endmenu
0157 endif # BLOCK
0158
0159 menu "Pseudo filesystems"
0160
0161 source "fs/proc/Kconfig"
0162 source "fs/kernfs/Kconfig"
0163 source "fs/sysfs/Kconfig"
0164
0165 config TMPFS
0166 bool "Tmpfs virtual memory file system support (former shm fs)"
0167 depends on SHMEM
0168 help
0169 Tmpfs is a file system which keeps all files in virtual memory.
0170
0171 Everything in tmpfs is temporary in the sense that no files will be
0172 created on your hard drive. The files live in memory and swap
0173 space. If you unmount a tmpfs instance, everything stored therein is
0174 lost.
0175
0176 See <file:Documentation/filesystems/tmpfs.rst> for details.
0177
0178 config TMPFS_POSIX_ACL
0179 bool "Tmpfs POSIX Access Control Lists"
0180 depends on TMPFS
0181 select TMPFS_XATTR
0182 select FS_POSIX_ACL
0183 help
0184 POSIX Access Control Lists (ACLs) support additional access rights
0185 for users and groups beyond the standard owner/group/world scheme,
0186 and this option selects support for ACLs specifically for tmpfs
0187 filesystems.
0188
0189 If you've selected TMPFS, it's possible that you'll also need
0190 this option as there are a number of Linux distros that require
0191 POSIX ACL support under /dev for certain features to work properly.
0192 For example, some distros need this feature for ALSA-related /dev
0193 files for sound to work properly. In short, if you're not sure,
0194 say Y.
0195
0196 config TMPFS_XATTR
0197 bool "Tmpfs extended attributes"
0198 depends on TMPFS
0199 default n
0200 help
0201 Extended attributes are name:value pairs associated with inodes by
0202 the kernel or by users (see the attr(5) manual page for details).
0203
0204 Currently this enables support for the trusted.* and
0205 security.* namespaces.
0206
0207 You need this for POSIX ACL support on tmpfs.
0208
0209 If unsure, say N.
0210
0211 config TMPFS_INODE64
0212 bool "Use 64-bit ino_t by default in tmpfs"
0213 depends on TMPFS && 64BIT
0214 default n
0215 help
0216 tmpfs has historically used only inode numbers as wide as an unsigned
0217 int. In some cases this can cause wraparound, potentially resulting
0218 in multiple files with the same inode number on a single device. This
0219 option makes tmpfs use the full width of ino_t by default, without
0220 needing to specify the inode64 option when mounting.
0221
0222 But if a long-lived tmpfs is to be accessed by 32-bit applications so
0223 ancient that opening a file larger than 2GiB fails with EINVAL, then
0224 the INODE64 config option and inode64 mount option risk operations
0225 failing with EOVERFLOW once 33-bit inode numbers are reached.
0226
0227 To override this configured default, use the inode32 or inode64
0228 option when mounting.
0229
0230 If unsure, say N.
0231
0232 config ARCH_SUPPORTS_HUGETLBFS
0233 def_bool n
0234
0235 config HUGETLBFS
0236 bool "HugeTLB file system support"
0237 depends on X86 || IA64 || SPARC64 || ARCH_SUPPORTS_HUGETLBFS || BROKEN
0238 help
0239 hugetlbfs is a filesystem backing for HugeTLB pages, based on
0240 ramfs. For architectures that support it, say Y here and read
0241 <file:Documentation/admin-guide/mm/hugetlbpage.rst> for details.
0242
0243 If unsure, say N.
0244
0245 config HUGETLB_PAGE
0246 def_bool HUGETLBFS
0247
0248 #
0249 # Select this config option from the architecture Kconfig, if it is preferred
0250 # to enable the feature of HugeTLB Vmemmap Optimization (HVO).
0251 #
0252 config ARCH_WANT_HUGETLB_PAGE_OPTIMIZE_VMEMMAP
0253 bool
0254
0255 config HUGETLB_PAGE_OPTIMIZE_VMEMMAP
0256 def_bool HUGETLB_PAGE
0257 depends on ARCH_WANT_HUGETLB_PAGE_OPTIMIZE_VMEMMAP
0258 depends on SPARSEMEM_VMEMMAP
0259
0260 config HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON
0261 bool "HugeTLB Vmemmap Optimization (HVO) defaults to on"
0262 default n
0263 depends on HUGETLB_PAGE_OPTIMIZE_VMEMMAP
0264 help
0265 The HugeTLB VmemmapvOptimization (HVO) defaults to off. Say Y here to
0266 enable HVO by default. It can be disabled via hugetlb_free_vmemmap=off
0267 (boot command line) or hugetlb_optimize_vmemmap (sysctl).
0268
0269 config MEMFD_CREATE
0270 def_bool TMPFS || HUGETLBFS
0271
0272 config ARCH_HAS_GIGANTIC_PAGE
0273 bool
0274
0275 source "fs/configfs/Kconfig"
0276 source "fs/efivarfs/Kconfig"
0277
0278 endmenu
0279
0280 menuconfig MISC_FILESYSTEMS
0281 bool "Miscellaneous filesystems"
0282 default y
0283 help
0284 Say Y here to get to see options for various miscellaneous
0285 filesystems, such as filesystems that came from other
0286 operating systems.
0287
0288 This option alone does not add any kernel code.
0289
0290 If you say N, all options in this submenu will be skipped and
0291 disabled; if unsure, say Y here.
0292
0293 if MISC_FILESYSTEMS
0294
0295 source "fs/orangefs/Kconfig"
0296 source "fs/adfs/Kconfig"
0297 source "fs/affs/Kconfig"
0298 source "fs/ecryptfs/Kconfig"
0299 source "fs/hfs/Kconfig"
0300 source "fs/hfsplus/Kconfig"
0301 source "fs/befs/Kconfig"
0302 source "fs/bfs/Kconfig"
0303 source "fs/efs/Kconfig"
0304 source "fs/jffs2/Kconfig"
0305 # UBIFS File system configuration
0306 source "fs/ubifs/Kconfig"
0307 source "fs/cramfs/Kconfig"
0308 source "fs/squashfs/Kconfig"
0309 source "fs/freevxfs/Kconfig"
0310 source "fs/minix/Kconfig"
0311 source "fs/omfs/Kconfig"
0312 source "fs/hpfs/Kconfig"
0313 source "fs/qnx4/Kconfig"
0314 source "fs/qnx6/Kconfig"
0315 source "fs/romfs/Kconfig"
0316 source "fs/pstore/Kconfig"
0317 source "fs/sysv/Kconfig"
0318 source "fs/ufs/Kconfig"
0319 source "fs/erofs/Kconfig"
0320 source "fs/vboxsf/Kconfig"
0321
0322 endif # MISC_FILESYSTEMS
0323
0324 menuconfig NETWORK_FILESYSTEMS
0325 bool "Network File Systems"
0326 default y
0327 depends on NET
0328 help
0329 Say Y here to get to see options for network filesystems and
0330 filesystem-related networking code, such as NFS daemon and
0331 RPCSEC security modules.
0332
0333 This option alone does not add any kernel code.
0334
0335 If you say N, all options in this submenu will be skipped and
0336 disabled; if unsure, say Y here.
0337
0338 if NETWORK_FILESYSTEMS
0339
0340 source "fs/nfs/Kconfig"
0341 source "fs/nfsd/Kconfig"
0342
0343 config GRACE_PERIOD
0344 tristate
0345
0346 config LOCKD
0347 tristate
0348 depends on FILE_LOCKING
0349 select GRACE_PERIOD
0350
0351 config LOCKD_V4
0352 bool
0353 depends on NFSD || NFS_V3
0354 depends on FILE_LOCKING
0355 default y
0356
0357 config NFS_ACL_SUPPORT
0358 tristate
0359 select FS_POSIX_ACL
0360
0361 config NFS_COMMON
0362 bool
0363 depends on NFSD || NFS_FS || LOCKD
0364 default y
0365
0366 config NFS_V4_2_SSC_HELPER
0367 bool
0368 default y if NFS_V4_2
0369
0370 source "net/sunrpc/Kconfig"
0371 source "fs/ceph/Kconfig"
0372
0373 source "fs/cifs/Kconfig"
0374 source "fs/ksmbd/Kconfig"
0375
0376 config SMBFS_COMMON
0377 tristate
0378 default y if CIFS=y || SMB_SERVER=y
0379 default m if CIFS=m || SMB_SERVER=m
0380
0381 source "fs/coda/Kconfig"
0382 source "fs/afs/Kconfig"
0383 source "fs/9p/Kconfig"
0384
0385 endif # NETWORK_FILESYSTEMS
0386
0387 source "fs/nls/Kconfig"
0388 source "fs/dlm/Kconfig"
0389 source "fs/unicode/Kconfig"
0390
0391 config IO_WQ
0392 bool
0393
0394 endmenu