# SPDX-License-Identifier: GPL-2.0-only
config OVERLAY_FS
	tristate "Overlay filesystem support"
	select EXPORTFS
	help
	  An overlay filesystem combines two filesystems - an 'upper' filesystem
	  and a 'lower' filesystem.  When a name exists in both filesystems, the
	  object in the 'upper' filesystem is visible while the object in the
	  'lower' filesystem is either hidden or, in the case of directories,
	  merged with the 'upper' object.

	  For more information see Documentation/filesystems/overlayfs.rst

config OVERLAY_FS_REDIRECT_DIR
	bool "Overlayfs: turn on redirect directory feature by default"
	depends on OVERLAY_FS
	help
	  If this config option is enabled then overlay filesystems will use
	  redirects when renaming directories by default.  In this case it is
	  still possible to turn off redirects globally with the
	  "redirect_dir=off" module option or on a filesystem instance basis
	  with the "redirect_dir=off" mount option.

	  Note, that redirects are not backward compatible.  That is, mounting
	  an overlay which has redirects on a kernel that doesn't support this
	  feature will have unexpected results.

	  If unsure, say N.

config OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW
	bool "Overlayfs: follow redirects even if redirects are turned off"
	default y
	depends on OVERLAY_FS
	help
	  Disable this to get a possibly more secure configuration, but that
	  might not be backward compatible with previous kernels.

	  If backward compatibility is not an issue, then it is safe and
	  recommended to say N here.

	  For more information, see Documentation/filesystems/overlayfs.rst

	  If unsure, say Y.

config OVERLAY_FS_INDEX
	bool "Overlayfs: turn on inodes index feature by default"
	depends on OVERLAY_FS
	help
	  If this config option is enabled then overlay filesystems will use
	  the index directory to map lower inodes to upper inodes by default.
	  In this case it is still possible to turn off index globally with the
	  "index=off" module option or on a filesystem instance basis with the
	  "index=off" mount option.

	  The inodes index feature prevents breaking of lower hardlinks on copy
	  up.

	  Note, that the inodes index feature is not backward compatible.
	  That is, mounting an overlay which has an inodes index on a kernel
	  that doesn't support this feature will have unexpected results.

	  If unsure, say N.

config OVERLAY_FS_NFS_EXPORT
	bool "Overlayfs: turn on NFS export feature by default"
	depends on OVERLAY_FS
	depends on OVERLAY_FS_INDEX
	depends on !OVERLAY_FS_METACOPY
	help
	  If this config option is enabled then overlay filesystems will use
	  the index directory to decode overlay NFS file handles by default.
	  In this case, it is still possible to turn off NFS export support
	  globally with the "nfs_export=off" module option or on a filesystem
	  instance basis with the "nfs_export=off" mount option.

	  The NFS export feature creates an index on copy up of every file and
	  directory.  This full index is used to detect overlay filesystems
	  inconsistencies on lookup, like redirect from multiple upper dirs to
	  the same lower dir.  The full index may incur some overhead on mount
	  time, especially when verifying that directory file handles are not
	  stale.

	  Note, that the NFS export feature is not backward compatible.
	  That is, mounting an overlay which has a full index on a kernel
	  that doesn't support this feature will have unexpected results.

	  Most users should say N here and enable this feature on a case-by-
	  case basis with the "nfs_export=on" mount option.

	  Say N unless you fully understand the consequences.

config OVERLAY_FS_XINO_AUTO
	bool "Overlayfs: auto enable inode number mapping"
	default n
	depends on OVERLAY_FS
	depends on 64BIT
	help
	  If this config option is enabled then overlay filesystems will use
	  unused high bits in undelying filesystem inode numbers to map all
	  inodes to a unified address space.  The mapped 64bit inode numbers
	  might not be compatible with applications that expect 32bit inodes.

	  If compatibility with applications that expect 32bit inodes is not an
	  issue, then it is safe and recommended to say Y here.

	  For more information, see Documentation/filesystems/overlayfs.rst

	  If unsure, say N.

config OVERLAY_FS_METACOPY
	bool "Overlayfs: turn on metadata only copy up feature by default"
	depends on OVERLAY_FS
	select OVERLAY_FS_REDIRECT_DIR
	help
	  If this config option is enabled then overlay filesystems will
	  copy up only metadata where appropriate and data copy up will
	  happen when a file is opened for WRITE operation. It is still
	  possible to turn off this feature globally with the "metacopy=off"
	  module option or on a filesystem instance basis with the
	  "metacopy=off" mount option.

	  Note, that this feature is not backward compatible.  That is,
	  mounting an overlay which has metacopy only inodes on a kernel
	  that doesn't support this feature will have unexpected results.

	  If unsure, say N.
