# SPDX-License-Identifier: GPL-2.0-only
config NTFS3_FS
	tristate "NTFS Read-Write file system support"
	select NLS
	help
	  Windows OS native file system (NTFS) support up to NTFS version 3.1.

	  Y or M enables the NTFS3 driver with full features enabled (read,
	  write, journal replaying, sparse/compressed files support).
	  File system type to use on mount is "ntfs3". Module name (M option)
	  is also "ntfs3".

	  Documentation: <file:Documentation/filesystems/ntfs3.rst>

config NTFS3_64BIT_CLUSTER
	bool "64 bits per NTFS clusters"
	depends on NTFS3_FS && 64BIT
	help
	  Windows implementation of ntfs.sys uses 32 bits per clusters.
	  If activated 64 bits per clusters you will be able to use 4k cluster
	  for 16T+ volumes. Windows will not be able to mount such volumes.

	  It is recommended to say N here.

config NTFS3_LZX_XPRESS
	bool "activate support of external compressions lzx/xpress"
	depends on NTFS3_FS
	help
	  In Windows 10 one can use command "compact" to compress any files.
	  4 possible variants of compression are: xpress4k, xpress8k, xpress16k and lzx.
	  If activated you will be able to read such files correctly.

	  It is recommended to say Y here.

config NTFS3_FS_POSIX_ACL
	bool "NTFS POSIX Access Control Lists"
	depends on NTFS3_FS
	select FS_POSIX_ACL
	help
	  POSIX Access Control Lists (ACLs) support additional access rights
	  for users and groups beyond the standard owner/group/world scheme,
	  and this option selects support for ACLs specifically for ntfs
	  filesystems.
	  NOTE: this is linux only feature. Windows will ignore these ACLs.

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