# SPDX-License-Identifier: GPL-2.0-only
config AFS_FS
	tristate "Andrew File System support (AFS)"
	depends on INET
	select AF_RXRPC
	select DNS_RESOLVER
	select NETFS_SUPPORT
	help
	  If you say Y here, you will get an experimental Andrew File System
	  driver. It currently only supports unsecured read-only AFS access.

	  See <file:Documentation/filesystems/afs.rst> for more information.

	  If unsure, say N.

config AFS_DEBUG
	bool "AFS dynamic debugging"
	depends on AFS_FS
	help
	  Say Y here to make runtime controllable debugging messages appear.

	  See <file:Documentation/filesystems/afs.rst> for more information.

	  If unsure, say N.

config AFS_FSCACHE
	bool "Provide AFS client caching support"
	depends on AFS_FS=m && FSCACHE || AFS_FS=y && FSCACHE=y
	help
	  Say Y here if you want AFS data to be cached locally on disk through
	  the generic filesystem cache manager

config AFS_DEBUG_CURSOR
	bool "AFS server cursor debugging"
	depends on AFS_FS
	help
	  Say Y here to cause the contents of a server cursor to be dumped to
	  the dmesg log if the server rotation algorithm fails to successfully
	  contact a server.

	  See <file:Documentation/filesystems/afs.rst> for more information.

	  If unsure, say N.
