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

config NETFS_SUPPORT
	tristate
	help
	  This option enables support for network filesystems, including
	  helpers for high-level buffered I/O, abstracting out read
	  segmentation, local caching and transparent huge page support.

config NETFS_STATS
	bool "Gather statistical information on local caching"
	depends on NETFS_SUPPORT && PROC_FS
	help
	  This option causes statistical information to be gathered on local
	  caching and exported through file:

		/proc/fs/fscache/stats

	  The gathering of statistics adds a certain amount of overhead to
	  execution as there are a quite a few stats gathered, and on a
	  multi-CPU system these may be on cachelines that keep bouncing
	  between CPUs.  On the other hand, the stats are very useful for
	  debugging purposes.  Saying 'Y' here is recommended.

config NETFS_DEBUG
	bool "Enable dynamic debugging netfslib and FS-Cache"
	depends on NETFS_SUPPORT
	help
	  This permits debugging to be dynamically enabled in the local caching
	  management module.  If this is set, the debugging output may be
	  enabled by setting bits in /sys/module/netfs/parameters/debug.

config FSCACHE
	bool "General filesystem local caching manager"
	depends on NETFS_SUPPORT
	help
	  This option enables a generic filesystem caching manager that can be
	  used by various network and other filesystems to cache data locally.
	  Different sorts of caches can be plugged in, depending on the
	  resources available.

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

config FSCACHE_STATS
	bool "Gather statistical information on local caching"
	depends on FSCACHE && PROC_FS
	select NETFS_STATS
	help
	  This option causes statistical information to be gathered on local
	  caching and exported through file:

		/proc/fs/fscache/stats

	  The gathering of statistics adds a certain amount of overhead to
	  execution as there are a quite a few stats gathered, and on a
	  multi-CPU system these may be on cachelines that keep bouncing
	  between CPUs.  On the other hand, the stats are very useful for
	  debugging purposes.  Saying 'Y' here is recommended.

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