diff mbox series

[v27,08/10] fs/ntfs3: Add Kconfig, Makefile and doc

Message ID 20210729134943.778917-9-almaz.alexandrovich@paragon-software.com (mailing list archive)
State New, archived
Headers show
Series NTFS read-write driver GPL implementation by Paragon Software | expand

Commit Message

Konstantin Komarov July 29, 2021, 1:49 p.m. UTC
This adds Kconfig, Makefile and doc

Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
---
 Documentation/filesystems/ntfs3.rst | 107 ++++++++++++++++++++++++++++
 fs/ntfs3/Kconfig                    |  46 ++++++++++++
 fs/ntfs3/Makefile                   |  36 ++++++++++
 3 files changed, 189 insertions(+)
 create mode 100644 Documentation/filesystems/ntfs3.rst
 create mode 100644 fs/ntfs3/Kconfig
 create mode 100644 fs/ntfs3/Makefile

Comments

Kari Argillander Aug. 10, 2021, 7:47 a.m. UTC | #1
On Thu, Jul 29, 2021 at 04:49:41PM +0300, Konstantin Komarov wrote:
> This adds Kconfig, Makefile and doc
> 
> Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
> ---
>  Documentation/filesystems/ntfs3.rst | 107 ++++++++++++++++++++++++++++

Still missing Documentation/filesystems/index.rst as I stated before
https://lore.kernel.org/linux-fsdevel/20210103220739.2gkh6gy3iatv4fog@kari-VirtualBox/

>  fs/ntfs3/Kconfig                    |  46 ++++++++++++
>  fs/ntfs3/Makefile                   |  36 ++++++++++
>  3 files changed, 189 insertions(+)
>  create mode 100644 Documentation/filesystems/ntfs3.rst
>  create mode 100644 fs/ntfs3/Kconfig
>  create mode 100644 fs/ntfs3/Makefile
> 
> diff --git a/Documentation/filesystems/ntfs3.rst b/Documentation/filesystems/ntfs3.rst


> +Mount Options
> +=============
> +
> +The list below describes mount options supported by NTFS3 driver in addition to
> +generic ones.
> +
> +===============================================================================
> +
> +nls=name		This option informs the driver how to interpret path
> +			strings and translate them to Unicode and back. If
> +			this option is not set, the default codepage will be
> +			used (CONFIG_NLS_DEFAULT).
> +			Examples:
> +				'nls=utf8'

It seems that kernel community will start use iocharset= as default. nls
option can still be alias but will need deprecated message. See message
https://lore.kernel.org/linux-fsdevel/20200102211855.gg62r7jshp742d6i@pali/

and current work from Pali
https://lore.kernel.org/linux-fsdevel/20210808162453.1653-1-pali@kernel.org/

This is still RFC state so probably no horry, but good to know stuff. I
also added Pali so he also knows.

> diff --git a/fs/ntfs3/Makefile b/fs/ntfs3/Makefile
> new file mode 100644
> index 000000000..279701b62
> --- /dev/null
> +++ b/fs/ntfs3/Makefile
> @@ -0,0 +1,36 @@
> +# SPDX-License-Identifier: GPL-2.0
> +#
> +# Makefile for the ntfs3 filesystem support.
> +#
> +
> +# to check robot warnings
> +ccflags-y += -Wint-to-pointer-cast \
> +	$(call cc-option,-Wunused-but-set-variable,-Wunused-const-variable) \
> +	$(call cc-option,-Wold-style-declaration,-Wout-of-line-declaration)

It is good idea to include this url in commit message.
https://lore.kernel.org/linux-fsdevel/212218590.13874.1621431781547@office.mailbox.org/

And also add that signed off tag from Tor Vic.

> +
> +obj-$(CONFIG_NTFS3_FS) += ntfs3.o
> +
> +ntfs3-y :=	attrib.o \
> +		attrlist.o \
> +		bitfunc.o \
> +		bitmap.o \
> +		dir.o \
> +		fsntfs.o \
> +		frecord.o \
> +		file.o \
> +		fslog.o \
> +		inode.o \
> +		index.o \
> +		lznt.o \
> +		namei.o \
> +		record.o \
> +		run.o \
> +		super.o \
> +		upcase.o \
> +		xattr.o
> +
> +ntfs3-$(CONFIG_NTFS3_LZX_XPRESS) += $(addprefix lib/,\
> +		decompress_common.o \
> +		lzx_decompress.o \
> +		xpress_decompress.o \
> +		)
> \ No newline at end of file
> -- 
> 2.25.4
>
Pali Rohár Aug. 10, 2021, 8:19 a.m. UTC | #2
On Tuesday 10 August 2021 10:47:40 Kari Argillander wrote:
> On Thu, Jul 29, 2021 at 04:49:41PM +0300, Konstantin Komarov wrote:
> > This adds Kconfig, Makefile and doc
> > 
> > Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
> > ---
> >  Documentation/filesystems/ntfs3.rst | 107 ++++++++++++++++++++++++++++
> 
> Still missing Documentation/filesystems/index.rst as I stated before
> https://lore.kernel.org/linux-fsdevel/20210103220739.2gkh6gy3iatv4fog@kari-VirtualBox/
> 
> >  fs/ntfs3/Kconfig                    |  46 ++++++++++++
> >  fs/ntfs3/Makefile                   |  36 ++++++++++
> >  3 files changed, 189 insertions(+)
> >  create mode 100644 Documentation/filesystems/ntfs3.rst
> >  create mode 100644 fs/ntfs3/Kconfig
> >  create mode 100644 fs/ntfs3/Makefile
> > 
> > diff --git a/Documentation/filesystems/ntfs3.rst b/Documentation/filesystems/ntfs3.rst
> 
> 
> > +Mount Options
> > +=============
> > +
> > +The list below describes mount options supported by NTFS3 driver in addition to
> > +generic ones.
> > +
> > +===============================================================================
> > +
> > +nls=name		This option informs the driver how to interpret path
> > +			strings and translate them to Unicode and back. If
> > +			this option is not set, the default codepage will be
> > +			used (CONFIG_NLS_DEFAULT).
> > +			Examples:
> > +				'nls=utf8'
> 
> It seems that kernel community will start use iocharset= as default. nls
> option can still be alias but will need deprecated message. See message
> https://lore.kernel.org/linux-fsdevel/20200102211855.gg62r7jshp742d6i@pali/
> 
> and current work from Pali
> https://lore.kernel.org/linux-fsdevel/20210808162453.1653-1-pali@kernel.org/
> 
> This is still RFC state so probably no horry, but good to know stuff. I
> also added Pali so he also knows.

I was already in loop :-)

Anyway, yes, above RFC patch migrates all drivers to use iocharset=
mount option as it is the option which is already used by most fs
drivers. So argument is consistency.

But having the preferred mount option name in new fs drivers would
decrease work needed to done in that patch series.

> > diff --git a/fs/ntfs3/Makefile b/fs/ntfs3/Makefile
> > new file mode 100644
> > index 000000000..279701b62
> > --- /dev/null
> > +++ b/fs/ntfs3/Makefile
> > @@ -0,0 +1,36 @@
> > +# SPDX-License-Identifier: GPL-2.0
> > +#
> > +# Makefile for the ntfs3 filesystem support.
> > +#
> > +
> > +# to check robot warnings
> > +ccflags-y += -Wint-to-pointer-cast \
> > +	$(call cc-option,-Wunused-but-set-variable,-Wunused-const-variable) \
> > +	$(call cc-option,-Wold-style-declaration,-Wout-of-line-declaration)
> 
> It is good idea to include this url in commit message.
> https://lore.kernel.org/linux-fsdevel/212218590.13874.1621431781547@office.mailbox.org/
> 
> And also add that signed off tag from Tor Vic.
> 
> > +
> > +obj-$(CONFIG_NTFS3_FS) += ntfs3.o
> > +
> > +ntfs3-y :=	attrib.o \
> > +		attrlist.o \
> > +		bitfunc.o \
> > +		bitmap.o \
> > +		dir.o \
> > +		fsntfs.o \
> > +		frecord.o \
> > +		file.o \
> > +		fslog.o \
> > +		inode.o \
> > +		index.o \
> > +		lznt.o \
> > +		namei.o \
> > +		record.o \
> > +		run.o \
> > +		super.o \
> > +		upcase.o \
> > +		xattr.o
> > +
> > +ntfs3-$(CONFIG_NTFS3_LZX_XPRESS) += $(addprefix lib/,\
> > +		decompress_common.o \
> > +		lzx_decompress.o \
> > +		xpress_decompress.o \
> > +		)
> > \ No newline at end of file
> > -- 
> > 2.25.4
> >
Kari Argillander Aug. 10, 2021, 8:46 a.m. UTC | #3
On Tue, Aug 10, 2021 at 10:19:55AM +0200, Pali Rohár wrote:
> On Tuesday 10 August 2021 10:47:40 Kari Argillander wrote:
> > On Thu, Jul 29, 2021 at 04:49:41PM +0300, Konstantin Komarov wrote:
> > > This adds Kconfig, Makefile and doc
> > > 
> > > Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
> > > ---
> > >  Documentation/filesystems/ntfs3.rst | 107 ++++++++++++++++++++++++++++
> > 
> > Still missing Documentation/filesystems/index.rst as I stated before
> > https://lore.kernel.org/linux-fsdevel/20210103220739.2gkh6gy3iatv4fog@kari-VirtualBox/
> > 
> > >  fs/ntfs3/Kconfig                    |  46 ++++++++++++
> > >  fs/ntfs3/Makefile                   |  36 ++++++++++
> > >  3 files changed, 189 insertions(+)
> > >  create mode 100644 Documentation/filesystems/ntfs3.rst
> > >  create mode 100644 fs/ntfs3/Kconfig
> > >  create mode 100644 fs/ntfs3/Makefile
> > > 
> > > diff --git a/Documentation/filesystems/ntfs3.rst b/Documentation/filesystems/ntfs3.rst
> > 
> > 
> > > +Mount Options
> > > +=============
> > > +
> > > +The list below describes mount options supported by NTFS3 driver in addition to
> > > +generic ones.
> > > +
> > > +===============================================================================
> > > +
> > > +nls=name		This option informs the driver how to interpret path
> > > +			strings and translate them to Unicode and back. If
> > > +			this option is not set, the default codepage will be
> > > +			used (CONFIG_NLS_DEFAULT).
> > > +			Examples:
> > > +				'nls=utf8'
> > 
> > It seems that kernel community will start use iocharset= as default. nls
> > option can still be alias but will need deprecated message. See message
> > https://lore.kernel.org/linux-fsdevel/20200102211855.gg62r7jshp742d6i@pali/
> > 
> > and current work from Pali
> > https://lore.kernel.org/linux-fsdevel/20210808162453.1653-1-pali@kernel.org/
> > 
> > This is still RFC state so probably no horry, but good to know stuff. I
> > also added Pali so he also knows.
> 
> I was already in loop :-)

Yeah just added To: so that you really know someone mention you.

> Anyway, yes, above RFC patch migrates all drivers to use iocharset=
> mount option as it is the option which is already used by most fs
> drivers. So argument is consistency.
> 
> But having the preferred mount option name in new fs drivers would
> decrease work needed to done in that patch series.

Yeah it would be prefered that before this gets Linus tree then this
will use iocharset. Because this driver will probably replace NTFS
driver some day I think it is still good idea to make nls= alias. And
also because Paragon's own customers will might use it and there is
already many many users who uses ntfs3 because it is included some "must
have kernel patch lists".
diff mbox series

Patch

diff --git a/Documentation/filesystems/ntfs3.rst b/Documentation/filesystems/ntfs3.rst
new file mode 100644
index 000000000..fb2906736
--- /dev/null
+++ b/Documentation/filesystems/ntfs3.rst
@@ -0,0 +1,107 @@ 
+.. SPDX-License-Identifier: GPL-2.0
+
+=====
+NTFS3
+=====
+
+
+Summary and Features
+====================
+
+NTFS3 is fully functional NTFS Read-Write driver. The driver works with
+NTFS versions up to 3.1, normal/compressed/sparse files
+and journal replaying. File system type to use on mount is 'ntfs3'.
+
+- This driver implements NTFS read/write support for normal, sparse and
+  compressed files.
+- Supports native journal replaying;
+- Supports extended attributes
+	Predefined extended attributes:
+	- 'system.ntfs_security' gets/sets security
+			descriptor (SECURITY_DESCRIPTOR_RELATIVE)
+	- 'system.ntfs_attrib' gets/sets ntfs file/dir attributes.
+		Note: applied to empty files, this allows to switch type between
+		sparse(0x200), compressed(0x800) and normal;
+- Supports NFS export of mounted NTFS volumes.
+
+Mount Options
+=============
+
+The list below describes mount options supported by NTFS3 driver in addition to
+generic ones.
+
+===============================================================================
+
+nls=name		This option informs the driver how to interpret path
+			strings and translate them to Unicode and back. If
+			this option is not set, the default codepage will be
+			used (CONFIG_NLS_DEFAULT).
+			Examples:
+				'nls=utf8'
+
+uid=
+gid=
+umask=			Controls the default permissions for files/directories created
+			after the NTFS volume is mounted.
+
+fmask=
+dmask=			Instead of specifying umask which applies both to
+			files and directories, fmask applies only to files and
+			dmask only to directories.
+
+nohidden		Files with the Windows-specific HIDDEN (FILE_ATTRIBUTE_HIDDEN)
+			attribute will not be shown under Linux.
+
+sys_immutable		Files with the Windows-specific SYSTEM
+			(FILE_ATTRIBUTE_SYSTEM) attribute will be marked as system
+			immutable files.
+
+discard			Enable support of the TRIM command for improved performance
+			on delete operations, which is recommended for use with the
+			solid-state drives (SSD).
+
+force			Forces the driver to mount partitions even if 'dirty' flag
+			(volume dirty) is set. Not recommended for use.
+
+sparse			Create new files as "sparse".
+
+showmeta		Use this parameter to show all meta-files (System Files) on
+			a mounted NTFS partition.
+			By default, all meta-files are hidden.
+
+prealloc		Preallocate space for files excessively when file size is
+			increasing on writes. Decreases fragmentation in case of
+			parallel write operations to different files.
+
+no_acs_rules		"No access rules" mount option sets access rights for
+			files/folders to 777 and owner/group to root. This mount
+			option absorbs all other permissions:
+			- permissions change for files/folders will be reported
+				as successful, but they will remain 777;
+			- owner/group change will be reported as successful, but
+				they will stay as root
+
+acl			Support POSIX ACLs (Access Control Lists). Effective if
+			supported by Kernel. Not to be confused with NTFS ACLs.
+			The option specified as acl enables support for POSIX ACLs.
+
+noatime			All files and directories will not update their last access
+			time attribute if a partition is mounted with this parameter.
+			This option can speed up file system operation.
+
+===============================================================================
+
+ToDo list
+=========
+
+- Full journaling support (currently journal replaying is supported) over JBD.
+
+
+References
+==========
+https://www.paragon-software.com/home/ntfs-linux-professional/
+	- Commercial version of the NTFS driver for Linux.
+
+almaz.alexandrovich@paragon-software.com
+	- Direct e-mail address for feedback and requests on the NTFS3 implementation.
+
diff --git a/fs/ntfs3/Kconfig b/fs/ntfs3/Kconfig
new file mode 100644
index 000000000..6e4cbc48a
--- /dev/null
+++ b/fs/ntfs3/Kconfig
@@ -0,0 +1,46 @@ 
+# 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.
diff --git a/fs/ntfs3/Makefile b/fs/ntfs3/Makefile
new file mode 100644
index 000000000..279701b62
--- /dev/null
+++ b/fs/ntfs3/Makefile
@@ -0,0 +1,36 @@ 
+# SPDX-License-Identifier: GPL-2.0
+#
+# Makefile for the ntfs3 filesystem support.
+#
+
+# to check robot warnings
+ccflags-y += -Wint-to-pointer-cast \
+	$(call cc-option,-Wunused-but-set-variable,-Wunused-const-variable) \
+	$(call cc-option,-Wold-style-declaration,-Wout-of-line-declaration)
+
+obj-$(CONFIG_NTFS3_FS) += ntfs3.o
+
+ntfs3-y :=	attrib.o \
+		attrlist.o \
+		bitfunc.o \
+		bitmap.o \
+		dir.o \
+		fsntfs.o \
+		frecord.o \
+		file.o \
+		fslog.o \
+		inode.o \
+		index.o \
+		lznt.o \
+		namei.o \
+		record.o \
+		run.o \
+		super.o \
+		upcase.o \
+		xattr.o
+
+ntfs3-$(CONFIG_NTFS3_LZX_XPRESS) += $(addprefix lib/,\
+		decompress_common.o \
+		lzx_decompress.o \
+		xpress_decompress.o \
+		)
\ No newline at end of file