# SPDX-License-Identifier: GPL-2.0-only
config AUTOFS4_FS
	tristate "Old Kconfig name for Kernel automounter support"
	select AUTOFS_FS
	help
	   This name exists for people to just automatically pick up the
	   new name of the autofs Kconfig option. All it does is select
	   the new option name.

	   It will go away in a release or two as people have
	   transitioned to just plain AUTOFS_FS.

config AUTOFS_FS
	tristate "Kernel automounter support (supports v3, v4 and v5)"
	default n
	help
	   The automounter is a tool to automatically mount remote file systems
	   on demand. This implementation is partially kernel-based to reduce
	   overhead in the already-mounted case; this is unlike the BSD
	   automounter (amd), which is a pure user space daemon.

	   To use the automounter you need the user-space tools from
	   <https://www.kernel.org/pub/linux/daemons/autofs/>; you also want
	   to answer Y to "NFS file system support", below.

	   To compile this support as a module, choose M here: the module will be
	   called autofs.

	   If you are not a part of a fairly large, distributed network or
	   don't have a laptop which needs to dynamically reconfigure to the
	   local network, you probably do not need an automounter, and can say
	   N here.
