NTFS-3G Release History
The major and more important driver changes are listed below.
The NTFS-3G Mercurial version control system
has all the details.
Stable releases are GREEN, and
releases for testing are RED.
STABLE Version 1.2812 (August 15, 2008)
-- Release Notes
- Fix: The allocation size of an attribute may got corrupted if the attribute
size change failed.
- Fix: An MFT record could leak on big-endian CPUs if adding
a new attribute failed.
- Fix: The system log was flooded if a transparently compressed or encypted
file was tried to be updated repeatedly.
- New: Solaris support.
- New: Libtool-2 support.
- Change: No external dependency on librt anymore when internal FUSE is used
(default on Linux).
- Change: The default compiler is gcc.
- Change: Internal FUSE further shrank by 10%.
STABLE Version 1.2712 (July 12, 2008)
-- Release Notes
- Fix: A corrupted size directory or a directory over tens of million files may hang
the driver. If NTFS-3G is compiled with an external FUSE library (non-default
on Linux) then FUSE CVS is needed until FUSE 2.8.0 is released.
- Fix: Removing alternate data streams and extended attributes leaked memory.
- Fix: Mount could fail with some mount(8) utilities (e.g. busybox one)
if the /etc/mtab file didn't exist or was on a read-only file system. This
fix should solve most of the "/bin/mount: invalid option -i" mount problems.
If NTFS-3G is compiled with an external FUSE library (non-default
on Linux) then FUSE CVS is needed until FUSE 2.8.0 is released.
- Fix: The driver always returned "I/O errors" if the standard file descriptors were
closed during mount, e.g. via some usage of udev, hotplug, etc.
- Fix: Building the driver failed if the --prefix=/ configure option was used.
- Fix: Driver compilation may failed with 'PATH_MAX undeclared' error mesage in some
(cross)-compilation environments.
STABLE Version 1.2531 (May 29, 2008)
-- Release Notes
- Fix: Mount failed with "Invalid argument" error message if the mountpoint
was a symlink. If NTFS-3G is compiled with an external FUSE library (non-default
on Linux) then FUSE CVS is needed until FUSE 2.8.0 is released.
- Fix: A corrupted directory could hang the driver.
- Fix: Mount could hang if the block allocation map was corrupted.
- Fix: The driver could hang or misbehave when compressed, sparse or encrypted
file attribute flags were corrupted.
- Fix: The driver could crash when both an MFT attribute offset and the
allocated bytes were corrupted.
- Fix: Building the driver failed if the --exec-prefix configure option was
used without --sbindir=/sbin.
- Fix: Parallel 'make install' may failed.
- New: Support building the driver in a separate directory.
- New: Added --enable-mount-helper configure option which installs
/sbin/mount.ntfs-3g, so mount via mount(8) and /etc/fstab can work
on Linux. The default is enabled on Linux and disabled on all other
operating systems.
STABLE Version 1.2506 (May 6, 2008)
-- Release Notes
- Fix: In certain, rare circumstances, any area of the NTFS volume,
except the NTFS boot sector, could get corrupted. The chance for this
to happen is higher for close to full disk utilization and using
one of the more uncommon, less than 4096 byte cluster sizes.
The cluster size is logged under the /var/logs directory usually
in the 'messages' or 'daemon.log' log file, as the blksize mount parameter.
All stable releases have this issue since version 1.328.
Upgrade is strongly recommended from all NTFS-3G releases.
STABLE Version 1.2412 (April 12, 2008)
-- Release Notes
- Fix: The total file system depth was limited to 4095 characters by FUSE
and trying to access files and directories deeper gave "No such file or
directory" error. If NTFS-3G is compiled with an external FUSE library
(non-default on Linux), then FUSE CVS is needed until FUSE 2.8.0 is released.
- Fix: The symlink(2) system call failed or the size was truncated at modulo
256 if the old path was over 255 bytes.
- Fix: Unprivileged mount may have been denied because supplementary groups
were dropped too early as a security measure.
- Fix: Unprivileged mount may have been denied if the /etc/fuse.conf file
wasn't properly configured. This was redundant and the /etc/fuse.conf
file is not required anymore.
- Fix: Updating hard link attributes was delayed by one second which resulted
softwares seeing their file sizes and timestamps incorrectly during this
time interval.
- Fix: The 'noatime' mount option additionally and unconditionally was passed
to FUSE.
STABLE Version 1.2310 (March 10, 2008)
-- Release Notes
- Fix: The driver crashed when one tried to open a non-existent file which had
at least twice as long file name as the one allowed by the NTFS specification.
- Fix: Windows CHKDSK may reported minor inconsistencies because
the data and allocation size of some special purpose
resident unnamed $DATA attribute in the index and inode FILE_NAME
attributes could be incorrect.
- Fix: Unprivileged mount failed if user had rights for everything except
the FUSE device file.
- Fix: The 'dev' and 'suid' mount options didn't work.
- Change: The rmdir(2) system call returns ENOTEMPTY instead of EEXIST because the
GNOME glib library and the Nautilus file browser couldn't handle the also
standard EEXIST value which resulted an error message when for instance one
tried to remove a directory containing files.
- Change: The 'dev' and 'suid' mount options are the default from now on for
root mounts, similarly as other file systems behave. These options are
always denied for setuid-root and unprivileged mounts.
STABLE Version 1.2216 (February 16, 2008)
-- Release Notes
- Fix: File and directory removal, rename and move may have been denied
with an "Operation not supported" error message.
- Fix: Setuid-root ntfs-3g had a local root exploit and other security problems.
From now on unprivileged mounts of block devices are possible only with
using the integrated FUSE library (default on Linux) which has no known
security problem.
- Fix: Unprivileged unmount didn't always work.
- Fix: Create mount.ntfs-3g symlink always in /sbin where mount(8) needs it.
- New: Added 'remove_hiberfile' mount option to be able to read/write
mount hibernated volumes for recovery and troubleshooting purposes.
- Change: Keep shrinking driver size.
STABLE Version 1.2129 (January 29, 2008)
-- Release Notes
- Version 1.2125-RC is released unchanged as stable.
Version 1.2125-RC (January 24, 2008)
-- Release Notes
- Fix: the 1.2121-RC test release didn't compile on 64-bit architectures.
Version 1.2121-RC (January 21, 2008)
-- Release Notes
- New: Added ntfs-3g.probe utility which probes a volume for
read-only or read-write mountability.
- New: To facilitate the use of the NTFS-3G driver in scripts, an exit code is
returned to give an indication of the mountability status of the volume.
Zero value means success, and all other ones mean an error. The unique
error codes are documented in the ntfs-3g.probe manual page.
- New: Built-in FUSE support by using a stripped down, integrated
FUSE library. Linux uses this by default which means NTFS-3G
doesn't require the installation of the FUSE package, only FUSE kernel support.
- New: The --with-fuse=external configure option makes NTFS-3G to be
compiled with an external FUSE library. For non-Linux operating
systems this is the default and the only compilation option.
- New: README file is installed as documentation.
- New: The --enable-ldscript configure option uses ldscript instead of .so symlink.
- New: Added libntfs-3g.pc.in pkg-config and libntfs-3g.script.so.in ldconfig files.
- Change: Rewritten, backwards compatible build system.
- Change: Use 'make install-strip' instead of 'make strip'.
- Fix: The SIGTERM signal may caused deadlock which could block for instance the
shutdown process. If NTFS-3G is used with an external FUSE library,
which is not the default, then FUSE 2.7.2 package is required.
STABLE Version 1.1120 (November 20, 2007)
-- Release Notes
- Fix: Successful hard link removal may reported "Input/Output error".
- Fix: Listing the content of a single directory having over 600,000 files
and subdirectories may returned "Input/Output error" or truncated
directory listing.
- Fix: The atime mount option didn't work.
- Fix: POSIX file time updates (file access and modification times, inode
change time). Please note, though NTFS-3G updates the times correctly now,
FUSE may keep caching old, invalid time attributes for a short time
after rename(2), creat(2), and some file operations which involve hard links.
FUSE has fixed already the first two cases and they may be
included in the Linux kernel 2.6.24 release.
- Change: 10-20% write performance improvement.
- New: relatime support was added
and made the default file access time update method.
STABLE Version 1.1104 (November 4, 2007)
-- Release Notes
- Fix: Reads over the end of a file could return "invalid argument" error using
recent kernels. This problem may have caused Thunderbird to hang.
- Fix: Some versions of the gcc compiler have crashed during compilation.
- Fix: The utimes(2) system call may incorrectly updated the last status change filestamp.
- Change: The ntfs.streams.list extended attribute enumerates Alternate
Data Streams (ADS) '\0' separated.
STABLE Version 1.1030 (October 29, 2007)
-- Release Notes
- Fix: big-endian problems exposed by the
NTFS-3G Test Suite.
- Fix: free space calculation may was wrong for >1 TB volumes.
- Fix: some faulty Thunderbird
versions caused system log flooding.
- Fix: uClibc and uClinux improvements.
- Fix: logging improvements.
- Fix: many other minor fixes.
STABLE Version 1.1004 (October 4, 2007)
-- Release Notes
- Fix: unwritten sparse file
regions could get corrupted if the end of a write wasn't aligned to cluster boundary.
Sparse files are very rarely used, most typically by bittorent clients.
- Fix: creation of read-only files failed.
- Change: free inode calculation was CPU intensive during write
activity. This could reduce write performance when millions of files
are used if a file manager or desktop applet regularly polled for disk space
usage. Now the statfs() system call is constant time.
- Change: file creation performance is improved by 40-80%.
- Change: smart directory traversal is 20-200% faster for disk based
and 300-600% faster for memory cache based traversals.
STABLE Version 1.913 (September 13, 2007)
-- Release Notes
- Fix: hibernation check was too rigid and mount was refused in read/write mode
unnecessarily in some cases.
- Change: free disk space calculation was highly CPU intensive during write
activity. This could reduce write performance severely, especially for huge
volumes if a file manager or desktop applet regularly polled for disk space
usage. Now the calculation is constant time, around only 10 microseconds on a
typical desktop, and it's completely independent of the volume size.
- All performance improvements are included unchanged from the 1.910-RC test
release. Please see those details below.
Version 1.910-RC (September 10, 2007)
-- Release Notes
- Change: significantly improved the performance of writing many files,
typically by 50-1000% (copying files, unpacking, untarring packages,
compilation, directory synchronization, ...).
- Change: improved the performance of writing multi-GB size files,
particularly after the creation of many thousands of other
files. Previous disk space defragmentation is highly advised for the
best possible speed. File level defragmentation is not enough.
- Change: improved concurrent write performance.
STABLE Version 1.826 (August 26, 2007)
-- Release Notes
- Fix: utime() also updated the timestamp of the parent directory
but it shouldn't have (rsync, backup tool problems).
- Fix: ignore the "volume dirty" bit because its real meaning is "check the volume".
The fact of the real dirtiness is stored in the NTFS logfile which is already
checked for.
- Fix: compilation failed with glibc 2.7.
- New: the --disable-library 'configure' option can be used not to install but
link libntfs-3g into the ntfs-3g binary. This decreases the binary size by
about 10-15% and increases performance by about 2-5%.
STABLE Version 1.810 (August 10, 2007)
-- Release Notes
- Fix: file rename may updated the modification time of some files and directories
which caused some backup tools, like rsync, not to preserve always this timestamp.
- Fix: unmount (fusermount -u) was denied for an unprivileged user who was allowed to
mount a block device. FUSE 2.7.0+ user space package is required for the full fix.
- Fix: the driver could hang if there wasn't enough memory during reading a large directory
- Fix: reading a directory may reported success when there was an error.
- Fix: metadata update error was ignored in some very rare cases during writing a file.
- Fix: permissions checking was turned on if umask, fmask and dmask was set to
the default 000 value.
- Change: manual update, added Windows filename compatibility section.
- Change: lots of logging improvements.
STABLE Version 1.710 (July 10, 2007)
-- Release Notes
- Fix: move, rename and hard link could return "input/output error".
- Fix: very rare, recoverable directory corruption.
- Fix: portability improvements.
- Change: more troubleshooting hints if a volume can't be mounted.
- Change: logging improvements.
STABLE Version 1.616 (June 17, 2007)
-- Release Notes
- Version 1.612-RC is released as stable.
Version 1.612-RC (June 12, 2007)
Release Notes
- New: install executables to the root file system otherwise mount
could fail during boot.
- Fix: any kind of file size change failure returned "Operation not permitted".
- Fix: file close failure was not always reported.
- Fix: unmount failure was not always reported.
- Fix: file creation always gave "input/output error" if the $MFT Bitmap wasn't up-to-date.
- Fix: converting very long file names to Unicode may failed.
- Fix: syslog messages didn't show the low level error detail.
- Fix: compilation improvements on Mac OS X and NetBSD.
STABLE Version 1.516 (May 16, 2007)
-- Release Notes
- Fix: Linux security exploit if ntfs-3g was setuid and the
FUSE kernel driver wasn't loaded yet during mount.
STABLE Version 1.417 (April 16, 2007)
-- Release Notes
- Fix: mount failed if the -v (verbose) command line option was passed by mount(8).
STABLE Version 1.416 (April 16, 2007)
-- Release Notes
- Fix: parsing of the first mount option could fail in the 1.411-RC test release.
Version 1.411-RC (April 11, 2007)
-- Release Notes
- New: read-write mount is supported using the "force" mount option if the logfile is unclean.
- New: libntfs-3g is versioned.
- Fix: default ownership of files weren't always set to the mounting user.
- Fix: mount was denied if the NTFS Master File Table copy had non-standard size.
- Fix: catch and deny all junction/reparse point write operations.
- Fix: multiply -o options weren't allowed (FreeBSD's mount(8) requires this).
- Fix: don't try to run Linux specific code on non-Linux OSes.
STABLE Version 1.328 (March 28, 2007)
-- Release Notes
- Change: document and release version update to stable status.
Version 1.320-RC (March 20, 2007)
-- Release Notes
- Fix: fakeraid/softraid detection was incorrect.
- Change: major performance
improvement
for writing large files (new block allocator).
- Change: manual update, added access handling, security section.
- New: use the 'nonempty' FUSE mount option by default, so the driver behaves
as the in-kernel file systems.
- New: --disable-ldconfig configure option.
STABLE Version 1.0 (February 21, 2007)
-- Release Notes
- Change: document and release version update to stable status.
Version 0.20070207-RC1:
-- Release Notes
- New: the driver is in release candidate status.
- New: warn if the deficient FUSE 2.6.2 kernel module is used.
- Fix: a bug in chkdsk could result the removal of highly fragmented, valid files.
- Fix: Mac OS X portability improvements.
- Change: full file permission checking if any of the uid, gid, umask, fmask,
or dmask mount option is used.
Version 0.20070118-BETA:
-- Release Notes
- New: top request: setuid root support, the driver can run unprivileged.
- Fix: the 'user' and 'users' fstab mount options didn't work (requires setuid root ntfs-3g).
- Fix: time of last file modification and status change weren't updated.
Version 0.20070116-BETA:
-- Release Notes
- New: top request: support old FUSE kernel modules.
- Fix: ActiveSync didn't work via Samba 3.0.
Version 0.20070102-BETA:
-- Release Notes
- Fix: writing large files could be very slow.
- Fix: writing several files at the same time could be very slow.
- Fix: writing at several places into a file at the same time could be very slow.
- Fix: invalid argument error when writing randomly into sparse files.
Version 0.20061218-BETA:
-- Release Notes
- Fix: heavy memory usage with sparse files (p2p, bittorrent client problems).
- Fix: inode number wasn't filled in the dirent structures (CVS, getcwd, gnulib problems).
- Fix: 2-8% speed increase due to using pread/pwrite instead of lseek+read/write.
- Fix: fuse 2.6.x kernel module detection wasn't reliable.
Version 0.20061212-BETA:
-- Release Notes
- Fix: directories were inaccessible on Windows if the cluster size was bigger than 4kB.
- Fix: static linking failed with FUSE 2.6.0.
- Fix: 'make install' failed if ldconfig wasn't in the $PATH.
- Change: more verbose error reporting, explanations, hints for solutions.
Version 0.20061115-BETA:
-- Release Notes
- Fix: unmount was unsafe for removable devices.
- Fix: the code wasn't endian safe.
- Fix: mount arguments were omitted on the 2nd fuse mount attempt.
- New: FUSE 2.6.0 is required to ensure maximum reliability.
- New: bmap() implemented: safe swap file support, LILO bootability.
- Change: the file system type is 'fuseblk' instead of 'fuse' for block devices.
Version 0.20061031-BETA:
-- Release Notes
- Fix: unmount was asynchronous; full fix requires FUSE 2.6.0 as well.
- Fix: mount was denied if $MFTMirr was too small.
- Fix: option parsing was incorrect if there was no space between name & argument.
- Change: new software versioning.
- Fix: file creation at disk-full may lead to i/o errors.
- Fix: statistic of inodes and free inodes was incorrect (df -i).
- Fix: the 'umask' option wasn't always parsed as an octal number.
- Fix: "too long filename" handling wasn't POSIX compliant.
- Fix: mount was denied if $MFTMirr had unused garbage at the file end.
- Fix: rename was always denied if the target file or directory existed.
- Fix: renaming like 'foo' -> 'FOO' was denied in the WIN32 namespace.
- Fix: fuse kernel module is automatically loaded, no need for config.
- Fix: verbose mount error messages with hints for solutions.
- Fix: compilation failed with gcc 2.96.
- Change: top request: full read-write access to everybody by default.
- Change: file lookups are always case-sensitive.
- Fix: case-insensitive directory rename to itself may failed.
- Fix: some regular files weren't accessible on Linux.
- Fix: files created on Linux may not had enough permissions on Windows.
- Fix: directory couldn't be renamed if it had both WIN32 and DOS name.
- Fix: collision with ntfsprogs header files.
- Fix: improved large file write performance.
- Fix: better consistency if NTFS wasn't cleanly unmounted.
- Fix: write(2) may created holes.
- Fix: show mounted device names instead of /dev/fuse.
- First NTFS-3G BETA release.
Copyright © 2006-2008 - NTFS-3G, All Rights Reserved.