| # SPDX-License-Identifier: GPL-2.0-only | 
 | # | 
 | # File system configuration | 
 | # | 
 |  | 
 | menu "File systems" | 
 |  | 
 | # Use unaligned word dcache accesses | 
 | config DCACHE_WORD_ACCESS | 
 |        bool | 
 |  | 
 | config VALIDATE_FS_PARSER | 
 | 	bool "Validate filesystem parameter description" | 
 | 	help | 
 | 	  Enable this to perform validation of the parameter description for a | 
 | 	  filesystem when it is registered. | 
 |  | 
 | config FS_IOMAP | 
 | 	bool | 
 |  | 
 | # Stackable filesystems | 
 | config FS_STACK | 
 | 	bool | 
 |  | 
 | config BUFFER_HEAD | 
 | 	bool | 
 |  | 
 | # old blockdev_direct_IO implementation.  Use iomap for new code instead | 
 | config LEGACY_DIRECT_IO | 
 | 	depends on BUFFER_HEAD | 
 | 	bool | 
 |  | 
 | if BLOCK | 
 |  | 
 | source "fs/ext2/Kconfig" | 
 | source "fs/ext4/Kconfig" | 
 | source "fs/jbd2/Kconfig" | 
 |  | 
 | config FS_MBCACHE | 
 | # Meta block cache for Extended Attributes (ext2/ext3/ext4) | 
 | 	tristate | 
 | 	default y if EXT2_FS=y && EXT2_FS_XATTR | 
 | 	default y if EXT4_FS=y | 
 | 	default m if EXT2_FS_XATTR || EXT4_FS | 
 |  | 
 | source "fs/jfs/Kconfig" | 
 |  | 
 | source "fs/xfs/Kconfig" | 
 | source "fs/gfs2/Kconfig" | 
 | source "fs/ocfs2/Kconfig" | 
 | source "fs/btrfs/Kconfig" | 
 | source "fs/nilfs2/Kconfig" | 
 | source "fs/f2fs/Kconfig" | 
 | source "fs/zonefs/Kconfig" | 
 |  | 
 | endif # BLOCK | 
 |  | 
 | config FS_DAX | 
 | 	bool "File system based Direct Access (DAX) support" | 
 | 	depends on MMU | 
 | 	depends on ZONE_DEVICE | 
 | 	select FS_IOMAP | 
 | 	select DAX | 
 | 	help | 
 | 	  Direct Access (DAX) can be used on memory-backed block devices. | 
 | 	  If the block device supports DAX and the filesystem supports DAX, | 
 | 	  then you can avoid using the pagecache to buffer I/Os.  Turning | 
 | 	  on this option will compile in support for DAX. | 
 |  | 
 | 	  For a DAX device to support file system access it needs to have | 
 | 	  struct pages.  For the nfit based NVDIMMs this can be enabled | 
 | 	  using the ndctl utility: | 
 |  | 
 | 		# ndctl create-namespace --force --reconfig=namespace0.0 \ | 
 | 			--mode=fsdax --map=mem | 
 |  | 
 | 	  See the 'create-namespace' man page for details on the overhead of | 
 | 	  --map=mem: | 
 | 	  https://docs.pmem.io/ndctl-user-guide/ndctl-man-pages/ndctl-create-namespace | 
 |  | 
 |           For ndctl to work CONFIG_DEV_DAX needs to be enabled as well. For most | 
 | 	  file systems DAX support needs to be manually enabled globally or | 
 | 	  per-inode using a mount option as well.  See the file documentation in | 
 | 	  Documentation/filesystems/dax.rst for details. | 
 |  | 
 | 	  If you do not have a block device that is capable of using this, | 
 | 	  or if unsure, say N.  Saying Y will increase the size of the kernel | 
 | 	  by about 5kB. | 
 |  | 
 | config FS_DAX_PMD | 
 | 	bool | 
 | 	default FS_DAX | 
 | 	depends on FS_DAX | 
 | 	depends on ZONE_DEVICE | 
 | 	depends on TRANSPARENT_HUGEPAGE | 
 |  | 
 | # Posix ACL utility routines | 
 | # | 
 | # Note: Posix ACLs can be implemented without these helpers.  Never use | 
 | # this symbol for ifdefs in core code. | 
 | # | 
 | config FS_POSIX_ACL | 
 | 	def_bool n | 
 |  | 
 | config EXPORTFS | 
 | 	tristate | 
 |  | 
 | config EXPORTFS_BLOCK_OPS | 
 | 	bool "Enable filesystem export operations for block IO" | 
 | 	help | 
 | 	  This option enables the export operations for a filesystem to support | 
 | 	  external block IO. | 
 |  | 
 | config FILE_LOCKING | 
 | 	bool "Enable POSIX file locking API" if EXPERT | 
 | 	default y | 
 | 	help | 
 | 	  This option enables standard file locking support, required | 
 |           for filesystems like NFS and for the flock() system | 
 |           call. Disabling this option saves about 11k. | 
 |  | 
 | source "fs/crypto/Kconfig" | 
 |  | 
 | source "fs/verity/Kconfig" | 
 |  | 
 | source "fs/notify/Kconfig" | 
 |  | 
 | source "fs/quota/Kconfig" | 
 |  | 
 | source "fs/autofs/Kconfig" | 
 | source "fs/fuse/Kconfig" | 
 | source "fs/overlayfs/Kconfig" | 
 |  | 
 | menu "Caches" | 
 |  | 
 | source "fs/netfs/Kconfig" | 
 | source "fs/cachefiles/Kconfig" | 
 |  | 
 | endmenu | 
 |  | 
 | if BLOCK | 
 | menu "CD-ROM/DVD Filesystems" | 
 |  | 
 | source "fs/isofs/Kconfig" | 
 | source "fs/udf/Kconfig" | 
 |  | 
 | endmenu | 
 | endif # BLOCK | 
 |  | 
 | if BLOCK | 
 | menu "DOS/FAT/EXFAT/NT Filesystems" | 
 |  | 
 | source "fs/fat/Kconfig" | 
 | source "fs/exfat/Kconfig" | 
 | source "fs/ntfs3/Kconfig" | 
 |  | 
 | endmenu | 
 | endif # BLOCK | 
 |  | 
 | menu "Pseudo filesystems" | 
 |  | 
 | source "fs/proc/Kconfig" | 
 | source "fs/kernfs/Kconfig" | 
 | source "fs/sysfs/Kconfig" | 
 |  | 
 | config TMPFS | 
 | 	bool "Tmpfs virtual memory file system support (former shm fs)" | 
 | 	depends on SHMEM | 
 | 	select MEMFD_CREATE | 
 | 	help | 
 | 	  Tmpfs is a file system which keeps all files in virtual memory. | 
 |  | 
 | 	  Everything in tmpfs is temporary in the sense that no files will be | 
 | 	  created on your hard drive. The files live in memory and swap | 
 | 	  space. If you unmount a tmpfs instance, everything stored therein is | 
 | 	  lost. | 
 |  | 
 | 	  See <file:Documentation/filesystems/tmpfs.rst> for details. | 
 |  | 
 | config TMPFS_POSIX_ACL | 
 | 	bool "Tmpfs POSIX Access Control Lists" | 
 | 	depends on TMPFS | 
 | 	select TMPFS_XATTR | 
 | 	select FS_POSIX_ACL | 
 | 	help | 
 | 	  POSIX Access Control Lists (ACLs) support additional access rights | 
 | 	  for users and groups beyond the standard owner/group/world scheme, | 
 | 	  and this option selects support for ACLs specifically for tmpfs | 
 | 	  filesystems. | 
 |  | 
 | 	  If you've selected TMPFS, it's possible that you'll also need | 
 | 	  this option as there are a number of Linux distros that require | 
 | 	  POSIX ACL support under /dev for certain features to work properly. | 
 | 	  For example, some distros need this feature for ALSA-related /dev | 
 | 	  files for sound to work properly.  In short, if you're not sure, | 
 | 	  say Y. | 
 |  | 
 | config TMPFS_XATTR | 
 | 	bool "Tmpfs extended attributes" | 
 | 	depends on TMPFS | 
 | 	default n | 
 | 	help | 
 | 	  Extended attributes are name:value pairs associated with inodes by | 
 | 	  the kernel or by users (see the attr(5) manual page for details). | 
 |  | 
 | 	  This enables support for the trusted.*, security.* and user.* | 
 | 	  namespaces. | 
 |  | 
 | 	  You need this for POSIX ACL support on tmpfs. | 
 |  | 
 | 	  If unsure, say N. | 
 |  | 
 | config TMPFS_INODE64 | 
 | 	bool "Use 64-bit ino_t by default in tmpfs" | 
 | 	depends on TMPFS && 64BIT | 
 | 	default n | 
 | 	help | 
 | 	  tmpfs has historically used only inode numbers as wide as an unsigned | 
 | 	  int. In some cases this can cause wraparound, potentially resulting | 
 | 	  in multiple files with the same inode number on a single device. This | 
 | 	  option makes tmpfs use the full width of ino_t by default, without | 
 | 	  needing to specify the inode64 option when mounting. | 
 |  | 
 | 	  But if a long-lived tmpfs is to be accessed by 32-bit applications so | 
 | 	  ancient that opening a file larger than 2GiB fails with EINVAL, then | 
 | 	  the INODE64 config option and inode64 mount option risk operations | 
 | 	  failing with EOVERFLOW once 33-bit inode numbers are reached. | 
 |  | 
 | 	  To override this configured default, use the inode32 or inode64 | 
 | 	  option when mounting. | 
 |  | 
 | 	  If unsure, say N. | 
 |  | 
 | config TMPFS_QUOTA | 
 | 	bool "Tmpfs quota support" | 
 | 	depends on TMPFS | 
 | 	select QUOTA | 
 | 	help | 
 | 	  Quota support allows to set per user and group limits for tmpfs | 
 | 	  usage.  Say Y to enable quota support. Once enabled you can control | 
 | 	  user and group quota enforcement with quota, usrquota and grpquota | 
 | 	  mount options. | 
 |  | 
 | 	  If unsure, say N. | 
 |  | 
 | config ARCH_SUPPORTS_HUGETLBFS | 
 | 	def_bool n | 
 |  | 
 | menuconfig HUGETLBFS | 
 | 	bool "HugeTLB file system support" | 
 | 	depends on ARCH_SUPPORTS_HUGETLBFS | 
 | 	select MEMFD_CREATE | 
 | 	select PADATA if SMP | 
 | 	help | 
 | 	  hugetlbfs is a filesystem backing for HugeTLB pages, based on | 
 | 	  ramfs. For architectures that support it, say Y here and read | 
 | 	  <file:Documentation/admin-guide/mm/hugetlbpage.rst> for details. | 
 |  | 
 | 	  If unsure, say N. | 
 |  | 
 | if HUGETLBFS | 
 | config HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON | 
 | 	bool "HugeTLB Vmemmap Optimization (HVO) defaults to on" | 
 | 	default n | 
 | 	depends on HUGETLB_PAGE_OPTIMIZE_VMEMMAP | 
 | 	help | 
 | 	  The HugeTLB Vmemmap Optimization (HVO) defaults to off. Say Y here to | 
 | 	  enable HVO by default. It can be disabled via hugetlb_free_vmemmap=off | 
 | 	  (boot command line) or hugetlb_optimize_vmemmap (sysctl). | 
 | endif # HUGETLBFS | 
 |  | 
 | config HUGETLB_PAGE | 
 | 	def_bool HUGETLBFS | 
 | 	select XARRAY_MULTI | 
 |  | 
 | config HUGETLB_PAGE_OPTIMIZE_VMEMMAP | 
 | 	def_bool HUGETLB_PAGE | 
 | 	depends on ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP | 
 | 	depends on SPARSEMEM_VMEMMAP | 
 | 	select SPARSEMEM_VMEMMAP_PREINIT if ARCH_WANT_HUGETLB_VMEMMAP_PREINIT | 
 |  | 
 | config HUGETLB_PMD_PAGE_TABLE_SHARING | 
 | 	def_bool HUGETLB_PAGE | 
 | 	depends on ARCH_WANT_HUGE_PMD_SHARE && SPLIT_PMD_PTLOCKS | 
 |  | 
 | config ARCH_HAS_GIGANTIC_PAGE | 
 | 	bool | 
 |  | 
 | source "fs/configfs/Kconfig" | 
 | source "fs/efivarfs/Kconfig" | 
 |  | 
 | endmenu | 
 |  | 
 | menuconfig MISC_FILESYSTEMS | 
 | 	bool "Miscellaneous filesystems" | 
 | 	default y | 
 | 	help | 
 | 	  Say Y here to get to see options for various miscellaneous | 
 | 	  filesystems, such as filesystems that came from other | 
 | 	  operating systems. | 
 |  | 
 | 	  This option alone does not add any kernel code. | 
 |  | 
 | 	  If you say N, all options in this submenu will be skipped and | 
 | 	  disabled; if unsure, say Y here. | 
 |  | 
 | if MISC_FILESYSTEMS | 
 |  | 
 | source "fs/orangefs/Kconfig" | 
 | source "fs/adfs/Kconfig" | 
 | source "fs/affs/Kconfig" | 
 | source "fs/ecryptfs/Kconfig" | 
 | source "fs/hfs/Kconfig" | 
 | source "fs/hfsplus/Kconfig" | 
 | source "fs/befs/Kconfig" | 
 | source "fs/bfs/Kconfig" | 
 | source "fs/efs/Kconfig" | 
 | source "fs/jffs2/Kconfig" | 
 | # UBIFS File system configuration | 
 | source "fs/ubifs/Kconfig" | 
 | source "fs/cramfs/Kconfig" | 
 | source "fs/squashfs/Kconfig" | 
 | source "fs/freevxfs/Kconfig" | 
 | source "fs/minix/Kconfig" | 
 | source "fs/omfs/Kconfig" | 
 | source "fs/hpfs/Kconfig" | 
 | source "fs/qnx4/Kconfig" | 
 | source "fs/qnx6/Kconfig" | 
 | source "fs/resctrl/Kconfig" | 
 | source "fs/romfs/Kconfig" | 
 | source "fs/pstore/Kconfig" | 
 | source "fs/ufs/Kconfig" | 
 | source "fs/erofs/Kconfig" | 
 | source "fs/vboxsf/Kconfig" | 
 |  | 
 | endif # MISC_FILESYSTEMS | 
 |  | 
 | menuconfig NETWORK_FILESYSTEMS | 
 | 	bool "Network File Systems" | 
 | 	default y | 
 | 	depends on NET | 
 | 	help | 
 | 	  Say Y here to get to see options for network filesystems and | 
 | 	  filesystem-related networking code, such as NFS daemon and | 
 | 	  RPCSEC security modules. | 
 |  | 
 | 	  This option alone does not add any kernel code. | 
 |  | 
 | 	  If you say N, all options in this submenu will be skipped and | 
 | 	  disabled; if unsure, say Y here. | 
 |  | 
 | if NETWORK_FILESYSTEMS | 
 |  | 
 | source "fs/nfs/Kconfig" | 
 | source "fs/nfsd/Kconfig" | 
 |  | 
 | config GRACE_PERIOD | 
 | 	tristate | 
 |  | 
 | config LOCKD | 
 | 	tristate | 
 | 	depends on FILE_LOCKING | 
 | 	select CRC32 | 
 | 	select GRACE_PERIOD | 
 |  | 
 | config LOCKD_V4 | 
 | 	bool | 
 | 	depends on NFSD || NFS_V3 | 
 | 	depends on FILE_LOCKING | 
 | 	default y | 
 |  | 
 | config NFS_ACL_SUPPORT | 
 | 	tristate | 
 | 	select FS_POSIX_ACL | 
 |  | 
 | config NFS_COMMON | 
 | 	bool | 
 | 	depends on NFSD || NFS_FS || LOCKD | 
 | 	default y | 
 |  | 
 | config NFS_COMMON_LOCALIO_SUPPORT | 
 | 	tristate | 
 | 	depends on NFS_LOCALIO | 
 | 	default y if NFSD=y || NFS_FS=y | 
 | 	default m if NFSD=m && NFS_FS=m | 
 | 	select SUNRPC | 
 |  | 
 | config NFS_LOCALIO | 
 | 	bool "NFS client and server support for LOCALIO auxiliary protocol" | 
 | 	depends on NFSD && NFS_FS | 
 | 	select NFS_COMMON_LOCALIO_SUPPORT | 
 | 	default n | 
 | 	help | 
 | 	  Some NFS servers support an auxiliary NFS LOCALIO protocol | 
 | 	  that is not an official part of the NFS protocol. | 
 |  | 
 | 	  This option enables support for the LOCALIO protocol in the | 
 | 	  kernel's NFS server and client. Enable this to permit local | 
 | 	  NFS clients to bypass the network when issuing reads and | 
 | 	  writes to the local NFS server. | 
 |  | 
 | 	  If unsure, say N. | 
 |  | 
 | config NFS_V4_2_SSC_HELPER | 
 | 	bool | 
 | 	default y if NFS_V4_2 | 
 |  | 
 | source "net/sunrpc/Kconfig" | 
 | source "fs/ceph/Kconfig" | 
 |  | 
 | source "fs/smb/Kconfig" | 
 | source "fs/coda/Kconfig" | 
 | source "fs/afs/Kconfig" | 
 | source "fs/9p/Kconfig" | 
 |  | 
 | endif # NETWORK_FILESYSTEMS | 
 |  | 
 | source "fs/nls/Kconfig" | 
 | source "fs/dlm/Kconfig" | 
 | source "fs/unicode/Kconfig" | 
 |  | 
 | config IO_WQ | 
 | 	bool | 
 |  | 
 | endmenu |