Features Download

From: Szabolcs Szakacsits <szaka-IyvsvuGDJ8VAfugRpC6u6w <at> public.gmane.org>
Subject: Stable NTFS-3G 1.2129 released
Newsgroups: gmane.comp.file-systems.ntfs-3g.devel
Date: Monday 28th January 2008 20:22:34 UTC (over 11 years ago)

Version 1.2125-RC is released unchanged as stable. Please see below the 
slighly updated, original release note.

The big change 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 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 afford.
    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 on general purpose Linux systems using x86, 
ARM, MIPS, and x86-64 CPUs.

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

The stable release can be downloaded from


The changelog is at


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, Vang Be Pha, Plamen Vasilev Petrov,

and Jorg (Kano) Schirottke.

All the best,

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