# SPDX-License-Identifier: GPL-2.0-only
config NTFS3_FS
	tristate "NTFS Read-Write file system support"
	select NLS
	select LEGACY_DIRECT_IO
	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.
