# SPDX-License-Identifier: GPL-2.0-only

config CACHEFILES
	tristate "Filesystem caching on files"
	depends on NETFS_SUPPORT && FSCACHE && BLOCK
	help
	  This permits use of a mounted filesystem as a cache for other
	  filesystems - primarily networking filesystems - thus allowing fast
	  local disk to enhance the speed of slower devices.

	  See Documentation/filesystems/caching/cachefiles.rst for more
	  information.

config CACHEFILES_DEBUG
	bool "Debug CacheFiles"
	depends on CACHEFILES
	help
	  This permits debugging to be dynamically enabled in the filesystem
	  caching on files module.  If this is set, the debugging output may be
	  enabled by setting bits in /sys/modules/cachefiles/parameter/debug or
	  by including a debugging specifier in /etc/cachefilesd.conf.

config CACHEFILES_ERROR_INJECTION
	bool "Provide error injection for cachefiles"
	depends on CACHEFILES && SYSCTL
	help
	  This permits error injection to be enabled in cachefiles whilst a
	  cache is in service.

config CACHEFILES_ONDEMAND
	bool "Support for on-demand read"
	depends on CACHEFILES
	default n
	help
	  This permits userspace to enable the cachefiles on-demand read mode.
	  In this mode, when a cache miss occurs, responsibility for fetching
	  the data lies with the cachefiles backend instead of with the netfs
	  and is delegated to userspace.

	  If unsure, say N.
