xref: /OK3568_Linux_fs/kernel/fs/Kconfig (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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