# SPDX-License-Identifier: GPL-2.0-only
config CEPH_FS
	tristate "Ceph distributed file system"
	depends on INET
	select CEPH_LIB
	select LIBCRC32C
	select CRYPTO_AES
	select CRYPTO
	select NETFS_SUPPORT
	default n
	help
	  Choose Y or M here to include support for mounting the
	  experimental Ceph distributed file system.  Ceph is an extremely
	  scalable file system designed to provide high performance,
	  reliable access to petabytes of storage.

	  More information at https://ceph.io/.

	  If unsure, say N.

if CEPH_FS
config CEPH_FSCACHE
	bool "Enable Ceph client caching support"
	depends on CEPH_FS=m && FSCACHE || CEPH_FS=y && FSCACHE=y
	help
	  Choose Y here to enable persistent, read-only local
	  caching support for Ceph clients using FS-Cache

endif

config CEPH_FS_POSIX_ACL
	bool "Ceph POSIX Access Control Lists"
	depends on CEPH_FS
	select FS_POSIX_ACL
	help
	  POSIX Access Control Lists (ACLs) support permissions for users and
	  groups beyond the owner/group/world scheme.

	  If you don't know what Access Control Lists are, say N

config CEPH_FS_SECURITY_LABEL
	bool "CephFS Security Labels"
	depends on CEPH_FS && SECURITY
	help
	  Security labels support alternative access control models
	  implemented by security modules like SELinux. This option
	  enables an extended attribute handler for file security
	  labels in the Ceph filesystem.

	  If you are not using a security module that requires using
	  extended attributes for file security labels, say N.
