# SPDX-License-Identifier: GPL-2.0-only
config GFS2_FS
	tristate "GFS2 file system support"
	select FS_POSIX_ACL
	select CRC32
	select LIBCRC32C
	select QUOTACTL
	select FS_IOMAP
	help
	  A cluster filesystem.

	  Allows a cluster of computers to simultaneously use a block device
	  that is shared between them (with FC, iSCSI, NBD, etc...).  GFS reads
	  and writes to the block device like a local filesystem, but also uses
	  a lock module to allow the computers coordinate their I/O so
	  filesystem consistency is maintained.  One of the nifty features of
	  GFS is perfect consistency -- changes made to the filesystem on one
	  machine show up immediately on all other machines in the cluster.

	  To use the GFS2 filesystem in a cluster, you will need to enable
	  the locking module below. Documentation and utilities for GFS2 can
	  be found here: http://sources.redhat.com/cluster

	  The "nolock" lock module is now built in to GFS2 by default. If
	  you want to use the DLM, be sure to enable IPv4/6 networking.

config GFS2_FS_LOCKING_DLM
	bool "GFS2 DLM locking"
	depends on (GFS2_FS!=n) && NET && INET && (IPV6 || IPV6=n) && \
		CONFIGFS_FS && SYSFS && (DLM=y || DLM=GFS2_FS)
	help
	  Multiple node locking module for GFS2

	  Most users of GFS2 will require this. It provides the locking
	  interface between GFS2 and the DLM, which is required to use GFS2
	  in a cluster environment.
