Features Download

From: Szabolcs Szakacsits <szaka-IyvsvuGDJ8VAfugRpC6u6w <at> public.gmane.org>
Subject: NTFS-3G 1.2121 Release Candidate
Newsgroups: gmane.comp.file-systems.ntfs-3g.devel
Date: Monday 21st January 2008 14:45:12 UTC (over 11 years ago)
Happy New Year!!! 

The last year has been an absolutely fantastic one for the NTFS-3G project.

The main focus was to achieve and keep ensuring stability, usability, and 
implement the most needed functionalities. But with Your help the project 
has managed to perform so much more!

Big thanks to all of You sending the valuable feedbacks, bug reports, 
helping users and developers to solve the problems, writing news, 
installation and usage documents, extensively testing and using the driver,

developing incredible new features and fixes, packaging the software for 
easy use, nicely integrating the driver into over 100 distributions for 
smooth interoperability, tirelessly porting and maintaining the driver 
on all the supported platforms, vividly taking care about the projects 
operational infrastructure, and donating, sponsoring or supporting the 
project in any other direct or indirect way!

The year 2008 seems to be even more exciting. The plan is to implement 
the still missing most needed features, fully and reliably integrate 
improvements, most importantly the new permission and ownership support, 
finish porting Pawel Jakub Dawidek's POSIX test suite to Linux, start 
seriously working on the performance improvements, keep extending and 
improving the quality test suite, and further stabilize the driver on 
the non-Linux platforms.

Let's start with this release candidate. The big change this time is the 
built-in, integrated FUSE support on Linux and consequently a much 
improved, completely rewritten, backwards compatible build system, big 
thanks to Alon Bar-Lev!

What does the integrated FUSE support mean? It means that NTFS-3G has no 
FUSE runtime user space, or compilation time dependency on Linux anymore. 
Developers and users must only ensure that the FUSE kernel driver is 
available for the running kernel, which is basically a standard nowadays.

Why was this needed? There were quite many reasons for over a year and it 
was under strong consideration for over half a year. 

Despite NTFS-3G being available directly for over 130 distributions, there 
are still daily 931 source code downloads in average. The FUSE code, what 
NTFS-3G utilizes, is about only 5% of the NTFS-3G driver, still over 50% of

the problem reports, some very serious ones, is related to FUSE. We're 
actively addressing all these problems but solutions aren't always coming 
fast enough or ever to satisfy the rapid NTFS-3G development and adoption 
rate. Some major examples:

  - Troublesome source code based installations. NTFS-3G required FUSE
    installed and often FUSE upgrade for fixes or new functionality.
    The more complex upgrade scenario often failed due to several reasons. 
    The official FUSE upgrade release cycle is also four times slower in 
    average than the NTFS-3G one. FUSE installation and runtime version 
    conflicts have been seen also too often.

  - NTFS-3G gets a lot of attention from embedded device and appliance
    users and vendors who often use custom system libraries. Due to the 
    way FUSE was engineered, it didn't work reliable with these libraries 
    and we were getting a lot mysterious, hard to debug problems, not in 
    our code. Repeated attempts to get these fixed quickly in FUSE failed.
    We have fixed these problems and starting from this NTFS-3G release 
    we can ensure the same quality using custom (e.g. uClibc) system 
    libraries and more rapidly make enhanced stable releases.

  - Quality testing NTFS-3G with and supporting several FUSE versions
    requires much more resources than anybody in the world could have.
    Moreover, typically always the latest FUSE release is the recommended 
    one to use. With the usage of the built-in FUSE support we can ensure 
    the same quality anywhere.

  - If a package manager stopped upgrading FUSE then NTFS-3G users
    had a deficient driver. Now one only needs to upgrade NTFS-3G
    and the needed, quality tested FUSE upgrade is included.

  - NTFS-3G doesn't need 90% of the FUSE functionality but on the other 
    hand it does need ones which are not included yet. Spending time 
    resolving issues with the unneeded FUSE functionality kept slowing 
    down NTFS-3G development. From now on, we can focus on and support
    only what we really need.

Thankfully FUSE lead developer, Miklos Szeredi, also thought a stripped 
down FUSE library is a good idea and was supporting with his comments.

The integrated FUSE library (fuse-lite) currently is 50% of its original 
size but this expected to shrink to 10-15% in the future. The NTFS-3G 
source package increased by only 12% but the compiled NTFS-3G driver is 
15% smaller now.

The fuse-lite library is always linked into libntfs-3g when it's used. 
Linux uses this by default. The --with-fuse=external configure option makes

ntfs-3g to be compiled with the external FUSE library. For FreeBSD, OS X 
and NetBSD this is the default and the only option.

Compilation modes:

 configure:                        fuse-lite linked into shared libntfs-3g
 configure --disable-library:      fuse-lite & libntfs-3g linked into
 configure --enable-really-static: fully static ntfs-3g with fuse-lite

 configure --with-fuse=external:                        same with the old
                                                        default compilation
 configure --with-fuse=external --disable-library:      libntfs-3g linked
                                                        into ntfs-3g
 configure --with-fuse=external --enable-really-static: fully static
                                                        with external fuse

All the tests were positive so far on general purpose Linux systems using 
x86, ARM, MIPS CPUs. Any feedback from FreeBSD, OS X and NetBSD would be 
very welcome since we couldn't test those yet.

The new build system should be fully backwards compatible, minus the
default fuse-lite use on Linux and 'make install-strip' should be used
instead of 'make strip && make install'.

This release candidate has a new ntfs-3g.probe utility which probes a 
volume for read-only or read-write mountability. The exit code is unique 
and they are documented in the ntfs-3g.probe manual page. The NTFS-3G 
driver started to use the same exit codes (e.g. not ntfs, corrupt ntfs, 
hibernated windows, unclean volume, etc).

An important signal handling related FUSE fix from Miklos Szeredi is 
included which prevents potential system hang, e.g. during shutdown 
(FUSE 2.7.2 has the same fix).

Jean-Pierre Andre has made available the release candidate of the NTFS-3G 
driver with file ownership and permissions. Please give us your feedback:


The NTFS-3G release candinate can be downloaded from


The changelog is at


If no major problem is reported then the stable NTFS-3G release can be 
expected earliest after three days.

Many thanks to Alon Bar-Lev, Jean-Pierre Andre, Erik Larsson, Miklos 
Szeredi, Dominique L Bouix, Csaba Henk, Alejandro Pulver, Bernhard Kaindl, 
Andrzej Szelachowski, Sergei Mozhaisky, and Vang Be Pha.


This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
CD: 19ms