There is interest in this information so here is the current status and
future plans for NTFS TNG.
NTFS TNG driver (currently kernel 2.5.x)
========================================
This is a driver I started from scratch because the old driver was just too
broken and using too old interfaces (buffer cache) and IMO bad approaches
to things in NTFS.
It is modern, much cleaner code and hence easier to understand. It uses all
the latest technologies and it is coming along nicely.
The driver is only for 2.5.x kernels at the moment but can be made to work
with minor modifications under 2.4.x kernels, too. In fact my plan is to
submit the driver for inclusion into the 2.5.x kernels and once it is there
and has had good testing to back port and submit for inclusion into 2.4.x
kernels.
The present state is that read support is almost complete to the extent of
offering the same functionality as the old driver. The only thing currently
unfinished is support for Attribute List Attributes but that is under
development at present. Once this is finished, the driver will need to
undergo some very serious testing/QA. After I test it myself as much as
possible and cannot break it any more I will be looking for people to test
it on their systems, especially I will need people with MultiProcessor
systems as well as people using other architectures than Intel 32-bit CPUs,
to test the driver. Unfortunately I cannot afford an SMP system (I used to
have a dual Pentium 2 but when the motherboard fried itself, I could only
replace it with a single CPU board) and similarly I do not have access to
non-ia32 computers running Linux on which I could test...
Assuming testing is successful, I will immediately submit the driver to
Linus for inclusion into 2.5.x. I intend to remove the old driver and
replace it with the new one completely. (For the later 2.4.x back port I
might well leave the old driver there for people who don't trust the new one.)
At this point I will begin working on write support in the new driver. Work
will be done outside the kernel tree in CVS (Sourceforge hosts my
linux-ntfs project including the ntfs and ntfs tng drivers). This will be
done in distinct stages and once each stage is complete and tested locally
it will be submitted for 2.5.x, then back ported to 2.4.x once proven to
work well.
The stages as I envision them at the moment are as follows:
1. On write mount, erase the contents of the journal ($LogFile). At the
beginning the user might just be required to run ntfsfix (from linux-ntfs
package on Sourceforge or we might do some hack ish solution until we have
proper write support in one of the latter stages).
2. Implement writing of dirty inodes (this will allow ATIME updates for
example) to disk and is really a pre-requisite to any further writing
abilities.
3. Implement file truncation.
4. Implement modification of existing files (i.e. both overwrite of
existing data in file and extend/shorten file with help from file
truncation implemented above in 3). - Initially only uncompressed files.
Either compressed files will be decompressed and then written uncompressed
or we refuse to write to compressed files altogether.
5. Add compressed file write support. (This point may well come much later,
the old driver doesn't allow this either.)
6. Implement file deletion.
6b. Disable the $UsnJrnl, the user accessible high level journal. (Windows
can reenable on reboot.)
7. Implement directory removal. (Possibly together with 6 in one step, or
possibly before 6).
8. Implement file creation.
9. Implement directory creation. (Possibly together with 8 in one step, or
possibly before 8).
At this point we have everything the old driver has and more (removal of
files and directories) but it is now working.
Now come the extra features. The first is going to be hard links as those
are trivial to support on NTFS. Then in random order there will be support for:
- security (ACL) (requires mapping between Windows user ids and Linux ones)
- quotas (requires mapping between Windows user ids and Linux ones)
- named streams
- extended attributes (EA)
- Microsoft's BackupAPI (possibly with help from user space library)
- on-line growing of the file system (this one is trivial to implement)
- on-line defragmentation
I think that covers everything except the following, which are going to be
major pains to implement and we may never bother:
- symbolic links/mount points/off line storage/etc (reparse points in NTFS)
- encrypted files (requires mapping between Windows user ids and Linux
ones, as well as extracting copies of the decryption keys from Windows
where ever it may be storing them)
- $UsnJrnl journal support
- $LogFile journal support
I have been told by someone that $LogFile is protected by multiple patents
and if this is true we will not be able to ever implement it I fear... In
that case or should it be too much work, Linux might get its own journal so
at least it is journalled while in Linux. The only problems/points of
failure would then be reboots in between Windows and Linux.
I hope that gives everyone some idea of where ntfs tng is at on Linux now
and which way it is heading.
Best regards,
Anton
--
"I've not lost my mind. It's backed up on tape somewhere." - Unknown
--
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Linux NTFS Maintainer / WWW: http://linux-ntfs.sf.net/
ICQ: 8561279 / WWW: http://www-stu.christs.cam.ac.uk/~aia21/
|