Announced back in October was NTFS Plus as a new Linux driver for NTFS based on the former NTFS kernel driver prior to Paragon Software contributing the NTFS3 driver code. The intent with this new driver is for better performance. more features, public user-space utilities around it, and all-around a nice step forward for those reliant on this Microsoft file-system. Out this week is the sixth iteration of this remade NTFS driver.
This remade NTFS driver has continued picking up more features and as of yesterday is now up to its sixth round of revisions with various fixes, code improvements, and tacking on extra functionality. Namjae Jeon has been leading the work on this cleaner and more performant NTFS open-source driver. With supporting IOmap, no buffer head usage, public utilities like fsck / mkfs, idmapped mount handling, and more while performing better, it’s looking destined to eventually be mainlined as the de facto NTFS Linux driver.
The changes with the NTFS v6 driver come down to:
v6:
– Update ntfs.rst documentation.(Removed historical comparisons and temporal terms as per review feedback)
– Remove outdated Linux-NTFS project references.
– Add missing return comments for functions.
– Move comments above in structure.
– Replace wait_for_stable_page with filemap_write_and_wait_range.
– Dereference the ntfs_inode field instead of the casts.
– Remove malloc.h file and use kvmalloc and friends.
– Update help text for NTFS_FS_POSIX_ACL in Kconfig.
– Remove __always_unused directives.
– Change #ifndef to #ifdef in debug.
– Refactor ntfs_collate_ntofs_ulongs.
– Change type of key length for index.
– Remove verbose debug logs from ntfs_collate.
– Fix sparse warnings.
– Move initialization into declaration line.
– Don’t type cast from pointer to void.
– Refactor ntfs_collate.
– Re-implement llseek using iomap.
– Don’t allow acl mount option when config is disabled.
– Fix kerneldoc warnings.
– Update comments for magic constants.
– Use sizeof(unsigned char) instead of UCHAR_T_SIZE_BITS.
– Replace macros with inline helpers.
– Add/use generic FS_IOC_SHUTDOWN definitions.
– Remove flush_dcache_folio.
– Introduce address space operations for $MFT.
– Add comment for ntfs_bio_end_io.
– Add ntfs_get_locked_folio helper.
– Remove outdated ntfs_setattr comment.
– Remove unnecessary kernel-doc comments.
– Fix missing error handling for compressed/encrypted files in setattr.
– Refactor ATTR_SIZE handling into ntfs_setattr_size().
– Rely on iomap for direct I/O alignment state.
– Report advanced file attributes and DIO alignment in getattr.
– Move ntfs_attr_expand and ntfs_extend_initialized_size to ntfs iomap.
– Factor out ntfs_dio_write_iter from ntfs_write_iter().
– Remove unneeded IS_IMMUTABLE in ntfs_filemap_page_mkwrite.
– Remove regular file check in ntfs_fallocate.
– Change COMPRESS_CONTEXT to lowercase.
– Add the comment for hash multiplier.
– Fix potential deadlock when inode is freed.
– Fix generic/321 failure when acl is enabled.
– use bdev_rw_virt in ntfs_bdev_read.
– Remove mft_writepage from ntfs_writepages.
– let ntfs_mft_writepages call ntfs_write_mft_block instead of ntfs_mft_writepage.
– Move ntfs_write_mft_block into mft.c.
– Move ntfs_bdev_read/write into bdev-io.c
– Move ntfs_mft_writepages to mft.c.
We’ll see when it ends up being submitted for mainline. Those interested in the NTFS driver remake in its current form can grab the patches from the Linux kernel mailing list.
