NTFS Overview
=============

Legato Systems, Inc. (http://www.legato.com) have sponsored Anton Altaparmakov
to develop NTFS on Linux since June 2001.

To mount an NTFS volume, use the filesystem type 'ntfs'. The driver
currently works only in read-only mode, with no fault-tolerance supported.

If you enable the dangerous(!) write support, make sure you can recover
from a complete loss of data. Also, download the Linux-NTFS project
distribution from Sourceforge at http://sourceforge.net/projects/linux-ntfs/
and always run the included ntfsfix utility after performing a write to an
NTFS partition from Linux to fix some of the damage done by the Linux NTFS
driver and to schedule an automatic chkdsk when Windows reboots. You should
run ntfsfix _after_ unmounting the partition in Linux but _before_ rebooting
into Windows. During the next reboot into Windows, chkdsk will be run
automatically fixing the remaining damage. If no errors are found it is a
good indication that the driver + ntfsfix together worked to full
satisfaction. (-;

Please note that the experimental write support is limited to Windows NT4 and
earlier versions at the moment.

If you think you have discovered a bug please have look at the "Known bugs"
section below to see whether it isn't known already.

For ftdisk support, limited success was reported with volume sets on top of
the md driver, although mirror and stripe sets should work as well - if the
md driver can be talked into using the same layout as Windows NT. However,
using the md driver will fail if any of your NTFS partitions have an odd
number of sectors.

Supported mount options
=======================

iocharset=name		Character set to use when returning file names.
			Unlike VFAT, NTFS suppresses names that contain
			unconvertible characters. Note that most character
			sets contain insufficient characters to represent all
			possible Unicode characters that can exist on NTFS. To
			be sure you are not missing any files, you are advised
			to use the iocharset=utf8 which should be capable of
			representing all Unicode characters.

utf8=<bool>		Use UTF-8 for converting file names. - It is preferable
			to use iocharset=utf8 instead, but if the utf8 NLS is
			not available, you can use this utf8 option, which
			enables the driver's builtin utf8 conversion functions.

uid=
gid=
umask=			These options work as documented in mount(8).
			By default, the files are owned by root and
			not readable by anyone else.

posix=<bool>		If enabled, the file system distinguishes between
			upper and lower case. The 8.3 alias names are presented
			as hard links instead of being suppressed.

show_sys_files=<bool>	If enabled, show all system files as normal files. Note
			that $MFT does not appear unless specifically
			requested. For example in bash, use: "ls -l \$MFT".
			Be careful not to write anything to them or you could
			crash the kernel and/or corrupt your file system!

Known bugs and (mis-)features
=============================

- Do not use the driver for writing as it corrupts the file system. If you do
  use it, get the Linux-NTFS tools and use the ntfsfix utility after
  dismounting a partition you wrote to.

- Use the show_sys_files mount option which should make things work generally
  better. (It results in both the short and long file names being shown as well
  as the sytem files.)

- Writing of extension records is not supported properly.

Please send bug reports/comments/feed back/abuse to the Linux-NTFS development
list at sourceforge: linux-ntfs-dev@lists.sourceforge.net

ChangeLog
=========

NTFS 1.1.16:

	- Removed non-functional uni_xlate mount options.
	- Clarified the semantics of the utf8 and iocharset mount options.
	- Threw out the non-functional mount options for using hard coded
	  character set conversion. Only kept utf8 one.
	- Fixed handling of mount options and proper handling of faulty mount
	  options on remount.
	- Cleaned up character conversion which basically became simplified a
	  lot due to the removal of the above mentioned mount options.
	- Made character conversion to be always consistent. Previously we
	  could output to the VFS file names which we would then not accept
	  back from the VFS so in effect we were generating ghost entries in
	  the directory listings which could not be accessed by any means.
	- Simplified time conversion functions drastically without sacrificing
	  accuracy. (-8
	- Fixed a use of a pointer before the check for the pointer being
	  NULL, reported by the Stanford checker.
	- Fixed several missing error checks, reported by the Stanford
	  checker and fixed by Rasmus Andersen.

NTFS 1.1.15 (changes since kernel 2.4.4's NTFS driver):

	- New mount option show_sys_files=<bool> to show all system files as
	  normal files.
	- Support for files and in general any attributes up to the full 2TiB
	  size supported by the NTFS filesystem. Note we only support up to
	  32-bits worth of inodes/clusters at this point.
	- Support for more than 128kiB sized runlists (using vmalloc_32()
	  instead of kmalloc()).
	- Fixed races in allocation of clusters and mft records.
	- Fixed major bugs in attribute handling / searching / collation.
	- Fixed major bugs in compressing a run list into a mapping pairs array.
	- Fixed major bugs in inode allocation. Especially file create and
	  mkdir.
	- Fixed memory leaks.
	- Fixed major bug in inode layout assignment of sequence numbers.
	- Lots of other bug fixes I can't think of right now...
	- Fixed NULL bug found by the Stanford checker in ntfs_dupuni2map().
	- Convert large stack variable to dynamically allocated one in
	  ntfs_get_free_cluster_count() (found by Stanford checker).

Kernel 2.4.4:

	- Started ChangeLog.

