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

Driver development has as of recently (since June '01) been sponsored
by Legato Systems, Inc. (http://www.legato.com)

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

utf8=<bool>		Use UTF-8 for converting file names

uni_xlate=<bool>,2	Use the VFAT-style encoding for file names outside
			the current character set. A boolean value will
			enable the feature, a value of 2 will enable the
			encoding as documented in vfat.txt:
				':', (u & 0x3f), ((u>>6) & 0x3f), (u>>12),

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.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.

