[GIT PULL] ntfs updates for 7.1-rc1
From: Namjae Jeon
Date: Thu Apr 16 2026 - 11:06:38 EST
Hi Linus,
Ever since Kari Argillander’s 2022 report regarding the "orphan" state
of the ntfs3 driver, I have spent the last 4 years working to provide
full write support and current trends(iomap, no buffer head, folio),
enhanced performance, stable maintenance, utility support including
fsck for NTFS in Linux. This new implementation is built upon the
clean foundation of the original read-only NTFS driver, adding:
- Full write support with delayed allocation.
- iomap and folio integration (removing buffer_head dependency).
- Better stability (passing 326 xfstests vs 273 for ntfs3).
- Come with a new suite of userspace utilities (ntfsprogs-plus).
The series has been reviewed and carries an Acked-by from Christoph Hellwig.
This series has been in linux-next for approximately two months. During
that time, additional fixes from Smatch static analysis and the patches
from other developers have been incorporated, including two build fixes
from Mark Brown(VMA descriptor rename and inode lookup u64 change) that
were picked up from linux-next.
The following changes since commit 2b7a25df823dc7d8f56f8ce7c2d2dac391cea9c2:
Merge tag 'mm-nonmm-stable-2026-02-18-19-56' of
git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm (2026-02-18
21:40:16 -0800)
are available in the Git repository at:
git pull git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/ntfs.git
tags/ntfs-for-7.1-rc1
for you to fetch changes up to 75579d45c31244811d57ae99692b6c3d197560b4:
ntfs: fix build error due to inode lookup API change to u64
(2026-04-16 06:59:09 +0900)
----------------------------------------------------------------
Major changes:
- Write support:
Implemented full write support based on the classic read-only NTFS
driver. Added delayed allocation to improve write performance through
multi-cluster allocation and reduced fragmentation of the cluster
bitmap.
- iomap conversion:
Switched buffered IO (reads/writes), direct IO, file extent mapping,
readpages, and writepages to use iomap.
- Remove buffer_head:
Completely removed buffer_head usage by converting to folios.
As a result, the dependency on CONFIG_BUFFER_HEAD has been removed
from Kconfig.
- Stability improvements:
The new ntfs driver passes 326 xfstests, compared to 273 for ntfs3.
All tests passed by ntfs3 are a complete subset of the tests passed
by this implementation. Added support for fallocate, idmapped mounts,
permissions, and more.
- xfstests Results report:
Total tests run: 787
Passed : 326
Failed : 38
Skipped : 423
Failed tests breakdown:
- 34 tests require metadata journaling
- 4 other tests:
094: No unwritten extent concept in NTFS on-disk format
563: cgroup v2 aware writeback accounting not supported
631: RENAME_WHITEOUT support required
787: NFS delegation test
----------------------------------------------------------------
Arnd Bergmann (1):
ntfs: reduce stack usage in ntfs_write_mft_block()
Chen Ni (1):
ntfs: Remove unneeded semicolon
Colin Ian King (1):
ntfs: Fix spelling mistake "initiailized" -> "initialized"
Ethan Tidmore (6):
ntfs: Fix null pointer dereference
ntfs: Replace ERR_PTR(0) with NULL
ntfs: Remove impossible condition
ntfs: Place check before dereference
ntfs: Add missing error code
ntfs: Fix possible deadlock
Hyunchul Lee (13):
ntfs: fix pointer/integer casting warnings
ntfs: fix WSL ea restore condition
ntfs: validate WSL EA payload sizes
ntfs: check $EA query-length in ntfs_ea_get
ntfs: harden ntfs_ea_lookup against malformed EA entries
ntfs: harden ntfs_listxattr against EA entries
ntfs: prefer IS_ERR_OR_NULL() over manual NULL check
ntfs: fix variable dereferenced before check warnings
ntfs: fix inconsistent indenting warnings
ntfs: fix ignoring unreachable code warnings
ntfs: add bound checking to ntfs_attr_find
ntfs: add bound checking to ntfs_external_attr_find
ntfs: remove redundant out-of-bound checks
Mark Brown (2):
ntfs: fix build error due to vma_desc_test() rename
ntfs: fix build error due to inode lookup API change to u64
Namjae Jeon (21):
Revert "fs: Remove NTFS classic"
fs: add generic FS_IOC_SHUTDOWN definitions
ntfs: update in-memory, on-disk structures and headers
ntfs: update super block operations
ntfs: update inode operations
ntfs: update mft operations
ntfs: update directory operations
ntfs: update file operations
ntfs: update iomap and address space operations
ntfs: update attrib operations
ntfs: update runlist handling and cluster allocator
ntfs: add reparse and ea operations
ntfs: update misc operations
ntfs3: remove legacy ntfs driver support
ntfs: add Kconfig and Makefile
Documentation: filesystems: update NTFS driver documentation
MAINTAINERS: update ntfs filesystem entry
ntfs: fix sysctl table registration and path
ntfs: select FS_IOMAP in Kconfig
ntfs: change mft_no type to u64
ntfs: use ->mft_no instead of ->i_ino in prints
Randy Dunlap (1):
ntfs: repair docum. malformed table
Woody Suwalski (2):
ntfs: add MODULE_ALIAS_FS
ntfs: add missing newlines to pr_err() messages
CREDITS | 9 +-
Documentation/filesystems/index.rst | 1 +
Documentation/filesystems/ntfs.rst | 159 +
MAINTAINERS | 9 +
fs/Kconfig | 1 +
fs/Makefile | 1 +
fs/ntfs/Kconfig | 48 +
fs/ntfs/Makefile | 10 +
fs/ntfs/aops.c | 263 ++
fs/ntfs/attrib.c | 5539 +++++++++++++++++++++++++++++++++++
fs/ntfs/attrib.h | 164 ++
fs/ntfs/attrlist.c | 289 ++
fs/ntfs/attrlist.h | 20 +
fs/ntfs/bdev-io.c | 117 +
fs/ntfs/bitmap.c | 287 ++
fs/ntfs/bitmap.h | 100 +
fs/ntfs/collate.c | 146 +
fs/ntfs/collate.h | 36 +
fs/ntfs/compress.c | 1577 ++++++++++
fs/ntfs/debug.c | 171 ++
fs/ntfs/debug.h | 63 +
fs/ntfs/dir.c | 1238 ++++++++
fs/ntfs/dir.h | 32 +
fs/ntfs/ea.c | 954 ++++++
fs/ntfs/ea.h | 30 +
fs/ntfs/file.c | 1161 ++++++++
fs/ntfs/index.c | 2117 +++++++++++++
fs/ntfs/index.h | 111 +
fs/ntfs/inode.c | 3787 ++++++++++++++++++++++++
fs/ntfs/inode.h | 358 +++
fs/ntfs/iomap.c | 870 ++++++
fs/ntfs/iomap.h | 23 +
fs/ntfs/layout.h | 2346 +++++++++++++++
fs/ntfs/lcnalloc.c | 1049 +++++++
fs/ntfs/lcnalloc.h | 134 +
fs/ntfs/logfile.c | 778 +++++
fs/ntfs/logfile.h | 245 ++
fs/ntfs/malloc.h | 77 +
fs/ntfs/mft.c | 2924 ++++++++++++++++++
fs/ntfs/mft.h | 91 +
fs/ntfs/mst.c | 194 ++
fs/ntfs/namei.c | 1684 +++++++++++
fs/ntfs/ntfs.h | 294 ++
fs/ntfs/object_id.c | 158 +
fs/ntfs/object_id.h | 14 +
fs/ntfs/quota.c | 95 +
fs/ntfs/quota.h | 15 +
fs/ntfs/reparse.c | 573 ++++
fs/ntfs/reparse.h | 20 +
fs/ntfs/runlist.c | 2066 +++++++++++++
fs/ntfs/runlist.h | 97 +
fs/ntfs/super.c | 2765 +++++++++++++++++
fs/ntfs/sysctl.c | 54 +
fs/ntfs/sysctl.h | 26 +
fs/ntfs/time.h | 87 +
fs/ntfs/unistr.c | 477 +++
fs/ntfs/upcase.c | 70 +
fs/ntfs/volume.h | 296 ++
fs/ntfs3/Kconfig | 10 +-
fs/ntfs3/dir.c | 10 -
fs/ntfs3/file.c | 11 -
fs/ntfs3/inode.c | 16 +-
fs/ntfs3/ntfs_fs.h | 11 -
fs/ntfs3/super.c | 59 +-
include/uapi/linux/fs.h | 12 +
65 files changed, 36331 insertions(+), 118 deletions(-)
create mode 100644 Documentation/filesystems/ntfs.rst
create mode 100644 fs/ntfs/Kconfig
create mode 100644 fs/ntfs/Makefile
create mode 100644 fs/ntfs/aops.c
create mode 100644 fs/ntfs/attrib.c
create mode 100644 fs/ntfs/attrib.h
create mode 100644 fs/ntfs/attrlist.c
create mode 100644 fs/ntfs/attrlist.h
create mode 100644 fs/ntfs/bdev-io.c
create mode 100644 fs/ntfs/bitmap.c
create mode 100644 fs/ntfs/bitmap.h
create mode 100644 fs/ntfs/collate.c
create mode 100644 fs/ntfs/collate.h
create mode 100644 fs/ntfs/compress.c
create mode 100644 fs/ntfs/debug.c
create mode 100644 fs/ntfs/debug.h
create mode 100644 fs/ntfs/dir.c
create mode 100644 fs/ntfs/dir.h
create mode 100644 fs/ntfs/ea.c
create mode 100644 fs/ntfs/ea.h
create mode 100644 fs/ntfs/file.c
create mode 100644 fs/ntfs/index.c
create mode 100644 fs/ntfs/index.h
create mode 100644 fs/ntfs/inode.c
create mode 100644 fs/ntfs/inode.h
create mode 100644 fs/ntfs/iomap.c
create mode 100644 fs/ntfs/iomap.h
create mode 100644 fs/ntfs/layout.h
create mode 100644 fs/ntfs/lcnalloc.c
create mode 100644 fs/ntfs/lcnalloc.h
create mode 100644 fs/ntfs/logfile.c
create mode 100644 fs/ntfs/logfile.h
create mode 100644 fs/ntfs/malloc.h
create mode 100644 fs/ntfs/mft.c
create mode 100644 fs/ntfs/mft.h
create mode 100644 fs/ntfs/mst.c
create mode 100644 fs/ntfs/namei.c
create mode 100644 fs/ntfs/ntfs.h
create mode 100644 fs/ntfs/object_id.c
create mode 100644 fs/ntfs/object_id.h
create mode 100644 fs/ntfs/quota.c
create mode 100644 fs/ntfs/quota.h
create mode 100644 fs/ntfs/reparse.c
create mode 100644 fs/ntfs/reparse.h
create mode 100644 fs/ntfs/runlist.c
create mode 100644 fs/ntfs/runlist.h
create mode 100644 fs/ntfs/super.c
create mode 100644 fs/ntfs/sysctl.c
create mode 100644 fs/ntfs/sysctl.h
create mode 100644 fs/ntfs/time.h
create mode 100644 fs/ntfs/unistr.c
create mode 100644 fs/ntfs/upcase.c
create mode 100644 fs/ntfs/volume.h