NTFS-3G Changelog

What's new in NTFS-3G 2016.2.22

Oct 23, 2016
  • Changes to NTFS-3G driver:
  • Write as much data as possible in compressed attribute pwrite
  • Fixed getting space for making an index non resident
  • Alleviated constraints relative to reparse points
  • Fixed special case of decompressing a runlist
  • Fixed returning the trimming count to fstrim()
  • Fixed the range of valid subauthority counts in a SID
  • Updated the read-only flag even when the security attribute was cached
  • Defended against reusing data from an invalid MFT record
  • Simplified NTFS ACLs when group same as owner and same permission as world
  • Packed/unpacked st_rdev transported as 32-bits on Solaris 64-bits
  • Zero uninitialized bytes before writing compressed data
  • Clear the environment when starting mount or umount
  • Implemented rewinding a directory in lowntfs-3g
  • Use incremental offsets when reading a directory in lowntfs-3g
  • Changes to mkntfs:
  • Make installing mkntfs /sbin symlinks dependent on ENABLE_MOUNT_HELPER
  • Mention the starting sector when it overflows in mkntfs
  • Upgraded the upper-case table to same as Windows 7, 8 and 10
  • Changes to ntfsresize:
  • Fixed relocating the MFT runlists
  • Decode the full list of bad clusters
  • Fixed resizing an extended bad cluster list
  • Changes to ntfsclone:
  • Decoded the full list of bad clusters
  • Changes to ntfsinfo:
  • Displayed reparse point information
  • Changes to ntfsdecrypt:
  • Fixed DESX decryption
  • Changes to ntfswipe:
  • Added clarifications about several options to the manual
  • New ntfsprogs tool:
  • Included ntfsrecover to recover the updates committed by Windows (experimental)
  • Overall:
  • Made a general cleanup of endianness types for easier checks

New in NTFS-3G 2015.3.14 (Oct 31, 2015)

  • Changes to NTFS-3G:
  • Fixed inserting a new ACL after wiping out by chkdsk
  • Fixed Windows-type inheritance
  • Fixed ignoring the umask mount option when permissions are used
  • Fixed checking permissions when Posix ACLs are compiled in but not enabled
  • Disabled option remove_hiberfile on read-only mounts
  • Implemented an extended attribute to get/set EAs
  • Avoid full runlist updating in more situations
  • Update ctime after setting an ACL
  • Use MFT record 15 for the first extent to MFT:DATA
  • Ignore the sloppy mount option (-s)
  • Implemented FITRIM (fstrim) ioctl
  • Reengineered the compression algorithm
  • Changes to ntfsprogs:
  • Return success from ntfsprogs utilities with options –version and the like
  • Implemented configure option –enable-quarantined for non functional utilities
  • Added manuals for ntfsdecrypt, ntfswipe, ntfstruncate and ntfsfallocate

New in NTFS-3G 2014.2.15 (Oct 31, 2015)

  • libntfs: added use of hd library to get the legacy BIOS geometry
  • libntfs: switched to /proc/mounts for checking existing mounts
  • libntfs: fixed usa checking by ntfsck on 4K sector disks
  • libntfs: fixed processing compressed data beyond file size (Windows 8 compliance)
  • libntfs: fixed expanding a resident attribute without inserting holes
  • libntfs: allow DACLs to not have any ACE
  • libntfs: ignore unmapped regions when checking whether sparse
  • libntfs: upgraded the Win32 interface for use with ntfsprogs
  • ntfsresize: enabled relocating the MFT when shrinking a volume
  • ntfsresize: fixed trying to update the MFT and Bitmap on a test run
  • ntfsresize: fixed updating all the MFT runs in a relocated MFT
  • ntfsresize: set the backup boot sector when the size is reliable
  • ntfsresize: reserved a single sector for the backup boot sector
  • ntfsundelete: output the modification time when scanning files
  • ntfsundelete: ported to Windows
  • ntfsclone: fixed wiping fragmented metadata when creating a metadata image
  • ntfsclone: allowed cloning a file system despite allocation errors
  • ntfsclone: fixed bad copying of the backup boot sector
  • ntfsclone: ported to Windows
  • ntfsdecrypt: made compatible with libgrypt-1.6

New in NTFS-3G 2013.1.13 (Oct 31, 2015)

  • ntfs-3g: fixed returned files types in readdir()
  • ntfs-3g: force option ‘ro’ when mounting a read-only device
  • ntfs-3g: keep the name of a deleted file in place for easier undeletion
  • ntfs-3g: accept multiple read-only mounts
  • ntfs-3g: improved Windows-type ACL inheritance, as needed by Windows 8
  • ntfs-3g: avoid unnecessary runlist update when appending data to a file
  • ntfs-3g: added inheritance of the set-group-id flag
  • ntfs-3g: deny mounting when fast restart mode of Windows 8 is detected
  • ntfs-3g: reject getting/setting DOS names on hard linked files
  • ntfsclone: fixed wiping user data when creating metadata images
  • ntfsclone: implemented a new option to set a new serial number
  • ntfsfix: implemented fixing the backup boot sector
  • ntfsfix: fixed clearing the bad cluster list
  • ntfsinfo: added allocation data to the volume parameters summary
  • ntfsinfo: output the numbers of runs and fragments for the selected file
  • ntfslabel: implemented a new option to set a new serial number
  • ntfswipe: added optional wiping of file tails and undelete data
  • mkntfs: insert an $Info stream in $UpCase to comply with Windows 8
  • openindianas: merged OpenIndiana requirements into the driver and fuse-lite

New in NTFS-3G 2012.1.15 (Oct 31, 2015)

  • ntfs-3g: fixed device path canonicalization for use by devmapper
  • ntfs-3g: fixed setting DOS names when defined with lower-case chars
  • ntfs-3g: fixed attribute flags controlling recursive writes
  • ntfs-3g: fixed compilation on OpenIndiana
  • ntfs-3g: fixed options parsing on OSes with no extended attributes
  • ntfs-3g: fixed relatime as a default mount option
  • ntfs-3g: fixed endless recursion when MFT extents are described by themselves
  • ntfs-3g: fixed the description of inherit option
  • ntfs-3g: fixed overwriting a truncated file
  • ntfs-3g: fixed truncation of DOS file names (12 ntfschars, not 12 utf8 chars)
  • ntfs-3g: fixed the setting of attributes by secaudit (index not synced)
  • ntfs-3g: faster compression
  • ntfs-3g: new option delay_mtime to delay updates of mtime+ctime
  • ntfsfix: new option -d to clear the dirty flag if fix is successful
  • ntfsfix: fixed volume dirty flag test
  • ntfsfix: new option to clear the list of bad sectors
  • ntfsfix: fixed compilation on Sparc
  • ntfsfix: fixed a bug causing a segmentation violation
  • ntfsfix: repair self-located MFT data bug
  • ntfscp: fix free space calculation
  • ntfscp: support compression
  • ntfsresize: implemented expanding runlists
  • ntfsresize: updated the description of the -f option
  • ntfsresize: expand an NTFS volume downwards
  • ntfsclone: backup bootsector not be to accounted for
  • ntfsclone: creating/restoring a metadata image
  • ntfsundelete: try to recover the file name when undeleting
  • ntfsundelete: use inode number to name unnamed files
  • ntfswipe: Big endian and other fixes
  • secaudit: prefixed owner and group SID in ACL display
  • library: fixed big cluster support using 4kB sector disk
  • library: fixed huge data writes
  • library: use transparent compression by default
  • library: fixed several bad returns in error conditions
  • library: enabled getting the sector size on FreeBSD and MacOSX
  • build: fixed “make libs” to only build libraries

New in NTFS-3G 2011.4.12 (Oct 31, 2015)

  • ntfs-3g: fixed possible wrong hole size when overwriting compressed data.
  • ntfs-3g: fixed listxattr() to environments with extended attributes.
  • ntfs-3g: fixed ENOSPC when making an index non-resident.
  • ntfs-3g: fixed partial mapping ahead of mapped runlist.
  • ntfs-3g: enabled forensic mounting (currently same as read-only).
  • ntfs-3g: expand an attribute without creating a hole.
  • ntfs-3g: improved appending data to a long hole.
  • ntfs-3g: deny direct modifications to metadata files.
  • ntfs-3g: option ‘acl’ to request the use of Posix ACLs.
  • ntfsclone: fixed reading old big-endian ntfsclone images.
  • ntfsclone: avoided writing beyond allocated variable.
  • ntfsclone: close volume and cleanup when exiting.
  • ntfsclone: new option not to clear the timestamps.
  • ntfsclone: sync created image before remounting.
  • ntfsclone: use a stream to produce aligned writes during image creation.
  • ntfsinfo: display times in UTC.
  • mkntfs: don’t store full bitmap and logfile in memory.
  • mkntfs: set a volume UUID if option -U.
  • mkntfs: fixed $MFT allocated size.
  • mkntfs: fixed allocated size of resident unnamed data.
  • ntfsfix: new option -n for no action.
  • ntfsfix: try alternate boot sector if cannot start up.
  • ntfsfix: check and fix the upcase table.
  • ntfsfix: try to fix file systems with incorrect size.
  • ntfsundelete: fixed a segfault.
  • ntfsresize: new option –info-mb-only.
  • ntfsresize: new option –check.

New in NTFS-3G 2010.10.2 (Oct 11, 2010)

  • Fixed filename encoding when standard functions are not available.
  • Fixed checking mounted device status on some non-Linux platforms.
  • Fixed mounting with SELinux context.
  • Fixed -n and –no-mtab mount option handling, needed by automount.
  • Improved consistency checks of POSIX ACLs.
  • NTFS-3G manual update.

New in NTFS-3G 2010.8.8 (Sep 10, 2010)

  • New: Full, transparent, read-write compression support.
  • New: Two new mount options: compression and nocompression (default).
  • New: Introduced windows_names mount option to enforce only Windows names.
  • Change: Re-enabled compression in root directory.
  • Change: Reversed default for showing/hiding hidden files.
  • Change: Redefined default user mapping.
  • Change: Marked files whose name has a dot initial as “hidden” if option hide_dot_files is used.
  • Change: Renamed option default_permissions to permissions.
  • Fixed use of utimensat() with external fuse older than 2.8.
  • Fixed a hang when reading a corrupt compressed file.
  • Fixed a possible crash when creating a stream.
  • Fixed all reported and found compressed write related bugs.
  • Fixed partially overwriting sparse clusters on highly fragmented volumes.
  • Fixed checking write errors in setxattr().
  • Fixed processing end of partial runlist for compressed files.
  • Fixed updating file compressed sizes.
  • Fixed checking the device mount state.
  • Fixed processing of options silent and no_def_opts.
  • Fixed excessive cluster allocation within big holes.
  • Fixed creating empty encrypted extended attributes.
  • Fixed too permissive sanity check before compressing.
  • Fixed error returns when writing compressed data.
  • Fixed sanity checked when closing a compressed file.
  • Fixed zeroing the end of an ex-hole cluster of compressed files.
  • Improved sanity checks on security descriptors.

New in NTFS-3G 2010.5.22 (Jul 1, 2010)

  • Fixed build to create usermap and secaudit.

New in NTFS-3G 2010.1.16 (Jan 20, 2010)

  • Fix: NTFS-3G may crashed if a junction point referred to a non-ASCII file.
  • Fix: Compilation errors on Mac OS X, OpenSolaris and openSUSE.

New in NTFS-3G 2009.11.14 (Dec 3, 2009)

  • New: Full file ownership and permissions support. The ownership and permissions of files are interoperable with Windows and conforms to the POSIX rules.
  • New: POSIX ACL support. The ACLs are an extension to ownership and permissions as defined in POSIX.
  • New: Optional Windows-type inheritance of ACLs.
  • New: Full extended attributes support for all namespaces: user, system, security and trusted.
  • New: Junction points support. The junction points and symbolic links created by Windows are seen as symbolic links.
  • New: Access is possible to NTFS internal data like Windows style archive bit and file attributes. They are mapped to extended attributes for easier access.
  • New: Compression write support: sequential writing to compressed files is supported.
  • New: Support copying and restoring encrypted files without decrypting them.
  • New: Support getting and setting high-resolution file timestamps.
  • New: Support to get, set and remove DOS filenames.
  • New: Tools for managing ownership, permissions and ACLs: ntfs-3g.secaudit checks the integrity of ownership, permissions and ACL, ntfs-3g.usermap gives help to configure ownership.
  • New: Implemented setchgtime() on Mac OS X.
  • Fix: Improved Windows junction and symlink handling.
  • Fix: Improved ACL handling.
  • Fix: Unicode normalization on Mac OS X.
  • Fix: Implemented true fsync() on Mac OS X
  • Change: Performance optimizations. Frequently used data are cached to improve speed. Space allocation for fragmented and sparse files has been improved.

New in NTFS-3G 2009.4.4 (Apr 7, 2009)

  • Fix: Mount and system boot could hang if Linux kernel audit was enabled.
  • Fix: Volume could be potentially corrupted or the driver crashed after a partial write or hardware error.
  • Fix: The driver could crash handling highly fragmented files

New in NTFS-3G 2009.2.1 Update 1 (Feb 15, 2009)

  • A dialog now exists for when the user tries to mount uncleanly unmounted or hibernated volumes, allowing the user to choose to force a mount without resorting to using the Terminal.
  • ntfs-3g now locks (advisory) the device that it mounts with flock to decrease the probability of two processes concurrently trying to mount it.
  • NTFS-3G.prefPane is now at version 0.9.7. (No big changes)
  • Bug fix: Unmounting ejectable NTFS drives through Finder failed because Mac OS X claimed they were still in use.
  • Improvement: When locking devices, the corresponding alternate device is now also locked (i.e. when a /dev/disk device is mounted and locked, its /dev/rdisk device is locked as well, and vice versa).
  • ublio build: Performance tuning should boost performance for most users. Feedback is much appreciated.

New in NTFS-3G 2009.2.1 (Feb 12, 2009)

  • New: The 'recover' and 'norecover' mount options were introduced. The former option will casue the driver to recover and repair a corrupted or inconsistent NTFS volume if it's possible. The default behaviour is 'recover'.
  • Fix: The driver may crashed when it tried to read a highly fragmented file or directory which was either corrupted or it was unreadable due to a hardware error. Upgrade is recommended.
  • Fix: The driver incorrectly returned 'Permission denied' error message if a requested extended attribute namespace wasn't supported.
  • Fix: The lack of file backup timestamp support confused some applications on OS X.
  • Change: The user extended attribute namespace is supported by default on Linux.
  • Change: A volume having unclean journal file is recovered and mounted by default. The 'norecover' mount option can be used to disable this behavior.

New in NTFS-3G 2009.1.1 Update 1 (Jan 29, 2009)

  • Fix for an issue with certain applications being unable to save files to the NTFS-3G volume.
  • This was caused by not having a setbkuptime implementation.
  • Fixed by creating a setbkuptime stub pretending to set the backup time (there is no such thing as backup time in NTFS).

New in NTFS-3G 2009.1.1 (Jan 28, 2009)

  • New: Built-in, transparent UTF-8 conversion support. This solves all the problems, described here, and even more with hidden and inaccessible filenames having national characters.
  • New: Support getting/setting the file creation timestamp on OS X.
  • Fix: An extended attribute got corrupted if the new attribute size was smaller than the original size.
  • Fix: Memory leaked if an extended attribute or alternate data stream couldn't be opened.
  • Fix: Report an error if a filename can not be listed during reading a directory.
  • Change: The 'locale=' mount option is not used anymore for filename characterset conversion. Instead filenames are always converted to UTF-8.

New in NTFS-3G 1.5130 Update 2 (Dec 22, 2008)

  • MacFUSE version detection code added to prevent people from using broken MacFUSE releases.

New in NTFS-3G 1.5222 RC (Dec 22, 2008)

  • New: Built-in, transparent UTF-8 conversion support. This should solve all the problems, described here, and even more with hidden and inaccessible filenames having national characters.
  • Fix: Report an error if a filename can not be listed during reading a directory.
  • Change: The 'locale=' mount option is not used anymore for filename characterset conversion. Instead filenames are always converted to UTF-8.

New in NTFS-3G 1.5130 Update 1 (Dec 10, 2008)

  • One of the utilities in the original package had accidentially been compiled for Mac OS X 10.5 only. This release is identical to the 1.5130 release except for the binary for ntfs-3g_daemon, which has been compiled with proper settings.

New in NTFS-3G 1.5130 (Dec 2, 2008)

  • Fix: Reading a data storage with permanent or temporary physical damage, or a partial read(2) system call could result ignoring the low level hardware error and returning invalid data. Upgrade is recommended.

New in NTFS-3G 1.5012 (Oct 13, 2008)

  • Version 1.2926-RC is released unchanged as stable 1.5012.
  • The NTFS-3G driver is able now for unlimited file and directory creation and removal as the result of 13 years continuous clean-room reverse engineering, documenting the different versions of NTFS on-disk formats and implementing a safely interoperable file system driver with the over 500,000 source lines Microsoft NTFS driver.

New in NTFS-3G 1.2926 RC (Sep 19, 2008)

  • New: Support unlimited file and directory creation. Successfully tested the creation of 54 million (54,000,000) files in a single directory, besides the other test cases.

New in NTFS-3G 1.2918 (Sep 19, 2008)

  • Fix: A corrupted directory index entry could hang the driver instead of returning "I/O error".

New in NTFS-3G 1.2812 (Aug 19, 2008)

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

New in NTFS-3G 1.2712 (Jul 14, 2008)

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

New in NTFS-3G 1.2531 SR2 (Jun 16, 2008)

  • fixed deletions from a sticky directory (on kernels >= 2.6.25)
  • integrated into ntfs-3g-1.2531

New in NTFS-3G 1.2531 (May 30, 2008)

  • Fix: Mount failed with "Invalid argument" error message if the mountpoint was a symlink.
  • 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.

New in NTFS-3G 1.2506 (May 7, 2008)

  • 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.
  • The 'local' option is now used in OS X 10.4, making hard drives appear as internal drives instead of network drives. The MacFUSE bug that made me disable this option in the first place has apparently been fixed since 1.1.x.

New in NTFS-3G 1.2412 (Apr 17, 2008)

  • 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), then FUSE CVS is needed until FUSE 2.8.0 is released.
  • Fix: symlink(2) 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.

New in NTFS-3G 1.2310 (Mar 24, 2008)

  • 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: rmdir(2) returns ENOTEMPTY instead of EEXIST because the GNOME glib library and the Nautilus file browser can'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.

New in NTFS-3G 1.2216 (Feb 25, 2008)

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