* [GIT PULL] ntfs update for 7.4-rc1
@ 2026-10-24 4:16 Namjae Jeon
2026-10-26 2:06 ` pr-tracker-bot
0 siblings, 1 reply; 2+ messages in thread
From: Namjae Jeon @ 2026-10-24 4:16 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Hyunchul Lee, Linux Kernel Mailing List, ntfs
Hi Linus,
This is ntfs update pull request for v7.4-rc1. I add a description of
this pull request below. Please pull ntfs with following ones.
Thanks!
The following changes since commit f47d223627f80cb7a1eb14c585fe6cb35de5e984:
Merge tag 'vfs-7.4-rc1.sync_close' of
git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs (2026-10-19
21:03:21 -1000)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/ntfs.git
tags/ntfs-for-7.4-rc1
for you to fetch changes up to 5dffb7307023d909277cb5f5f3f18f32afa31e2f:
ntfs: handle a failed size rollback in the write error path
(2026-10-23 09:43:20 +0900)
----------------------------------------------------------------
New features:
- Implement ioctls to list, read, write, and remove named streams on files
and directories. Provide optional file:stream pathname access through
streams_interface=windows, exposing streams as regular file descriptors
with support for mmap, locking, truncation, and allocation.
- Support file attribute queries and updates through FS_IOC_GETFLAGS and
FS_IOC_SETFLAGS. Store immutable, append-only, nodump, and noatime
settings in the private $LINUXFLAGS extended attribute and restore them
when loading inodes. Also report compression, encryption, and
the mount-wide case-folding policy as read-only attributes.
Other changes:
- Expose the existing NTFS volume serial number through FS_IOC_GETFSUUID
by registering it as an eight-byte filesystem identifier.
- Validate MFT I/O geometry and write MFT records and mirror data through
mapped I/O units, keeping neighboring records intact when multiple
records share a native 4Kn block. Track folio writeback until all BIOs
complete, serialize raw record updates against writeback, and use the
caller's requested completion mode.
- Discard stale uninitialized cache data before extending initialized
size, ensure shared mmap writes update initialized size after native
4Kn size extension, and synchronize attribute inode sizes after internal
resizes. Keep VFS and NTFS sizes consistent when write-error rollback
fails and record the volume error.
- Wait for existing folio writeback before updating attribute data,
require page alignment for full-page write optimizations, and include
the final partial cluster in synchronous writes. Skip duplicate VFS
page-cache truncation under the MFT record lock to avoid a truncate
and writeback deadlock.
- Restart allocation zone searches after failed hints and prevent
contiguous allocation requests from returning additional disjoint runs
that callers leave uninitialized. Allow fallocate after MFT-zone
exhaustion and interrupt allocation loops only for fatal signals,
avoiding spurious interruptions from io_uring task-work notifications.
- Wait for the initial bitmap scan before extending the MFT bitmap,
bound direct allocation candidates by the volume size, update free-space
accounting, and undo only newly allocated clusters after run coalescing.
Update attribute-list inode size before reserving additional space.
- Hold runlist locks while expanding non-resident attributes, balance
locks during MFT extension error handling, and avoid pointers
invalidated by runlist reallocation. Keep source runlists available for
rollback and allocate enough room for runlist markers and terminators.
- Return errors for unmappable runlist fragments instead of treating them
as holes or delayed allocation. Check non-resident attribute sizes
against their allocation and fail mounts when $MFT needs extent records
outside the decoded runlist to describe itself, preventing silent zero
reads and mount hangs.
- Load and validate $BadClus:$Bad at mount time and reserve known bad
clusters before the free-space scan. Fall back to read-only operation
when bad-cluster metadata cannot be validated and prevent subsequent
read-write remounts.
- Serialize volume flag updates and retain the dirty bit after metadata
changes while the volume remains mounted read-write. Persist recorded
errors after final metadata commits, fail ordinary read-only remounts
on sync, commit, or flush errors, and retain the dirty bit on forced
remounts.
- Flush the device write cache when syncing directories and report flush
failures from both file and directory fsync. Drain in-flight direct I/O
before buffered write fallback and keep nonblocking requests from
entering the blocking fallback path.
- Mount hibernated volumes, or volumes whose hibernation state cannot be
determined, read-only regardless of the errors= policy. Prevent
mount-time and dirty-state updates from modifying hibernated volumes.
- Validate complete EA chains, link zero-terminated tails when appending
entries, retain the EA presence flag, and distinguish empty values from
removal. Propagate lookup, write, and truncate errors, restore both EA
attributes after failed updates, and shut down the volume if restoration
fails.
- Restore the previous ACL xattr when a subsequent WSL mode update fails,
including replacement and removal cases. Record rollback failures so
an unsuccessful permission change cannot silently leave inconsistent
ACL and mode state.
- Apply MST fixups to individual index blocks on large-page systems and
use fixed 512-byte VCN units when an index block is smaller than its
cluster. Support lookup and removal of POSIX names containing
Windows-invalid characters and identify directory symlinks and
junctions during enumeration.
- Report the stored creation time for symbolic links through statx()
when querying the link itself with AT_SYMLINK_NOFOLLOW.
- Use wider decompression offsets to avoid overflow on 64 KB pages,
accept the standard sparse compression unit, and require the
compressed-size field only on the first attribute extent. Block direct
reads and skip readahead for encrypted files to prevent returning raw
ciphertext.
- Validate index entry offsets, logfile update sequence array counts,
attribute-list sizes, and index collation key lengths to prevent
out-of-bounds accesses, NULL pointer dereferences, and excessive
allocations from corrupt volume metadata.
- Derive FITRIM bitmap indexes from the page size and retain the full
64-bit minimum discard length. Balance highmem mappings in logfile
and MFT mirror checks and propagate specific errors from extent,
attribute, and reparse operations.
- Compare streams_interface with the mounted volume's setting during
remount, make named-stream UAPI padding explicit, document stream access
and Linux file attributes, and add the NTFS UAPI header to MAINTAINERS.
----------------------------------------------------------------
Arnd Bergmann (1):
ntfs: avoid unnecessary padding in uapi structure
Baolin Liu (16):
ntfs: return -EINVAL from ntfs_collate_ntofs_ulongs() on bad length
ntfs: preserve the truncate error in ntfs_enlarge_attribute()
ntfs: propagate the map_mft_record() error in ntfs_attrlist_entry_add()
ntfs: propagate the ntfs_attr_iget() error in update_reparse_data()
ntfs: fix error handling in ntfs_extent_inode_open and propagate errors
ntfs: keep the EA presence flag after creating the first entry
ntfs: validate EA chains and link zero-terminated tails
ntfs: propagate EA write and truncate errors
ntfs: preserve EA attribute lookup errors
ntfs: distinguish empty EA values from removal
ntfs: restore EA attributes when an update fails
ntfs: add fileattr query support
ntfs: persist immutable in the $LINUXFLAGS EA
ntfs: persist append-only in the $LINUXFLAGS EA
ntfs: persist nodump in the $LINUXFLAGS EA
ntfs: support FS_IOC_GETFSUUID
DaeMyung Kang (3):
ntfs: compare streams_interface with mounted volume on remount
ntfs: report block device flush failures from fsync
ntfs: flush the block device when syncing a directory
Hang Nan (1):
ntfs: reject index blocks with a too small entries offset
Hongling Zeng (12):
ntfs: NULL vol->vol_ino in the load_system_files() error teardown
ntfs: use fatal_signal_pending() for fallocate interruption checks
ntfs: fix volume flag update races
ntfs: set the volume dirty bit unconditionally on metadata changes
ntfs: sync the volume dirty bit with the recorded error state
ntfs: persist the dirty state after the final put_super() commits
ntfs: do not clear the volume dirty bit during sync
ntfs: check the dirty-state commit on remount and unmount
ntfs: fail remount on sync errors and keep the dirty bit on SB_FORCE
ntfs: mount hibernated volumes read-only regardless of errors=
ntfs: roll back the ACL xattr commit when the WSL mode update fails
ntfs: handle a failed size rollback in the write error path
Hyunchul Lee (19):
ntfs: read MFT writeback bounds under size_lock
ntfs: validate the MFT I/O geometry
ntfs: write MFT mirror data in mapped I/O units
ntfs: serialize raw MFT updates against folio writeback
ntfs: track direct MFT writes until BIO completion
ntfs: write MFT folios through mapped I/O units
ntfs: write MFT records through containing I/O units
ntfs: use sync flag for direct MFT writes
ntfs: trigger page_mkwrite for native 4Kn size extension
ntfs: wait for attribute folio writeback before update
ntfs: fix lookup of POSIX names with Windows-invalid characters
ntfs: fix incorrect VCN units for index blocks in large clusters
ntfs: fix FITRIM bitmap indexing for large pages
ntfs: require page-aligned full-page attribute writes
ntfs: avoid truncate and writeback deadlock
ntfs: validate attribute-list sizes before allocation
ntfs: avoid misclassifying directory reparse points
ntfs: accept standard sparse compression unit
ntfs: only require compressed size on first extent
Jiale Yao (1):
ntfs: drain in-flight DIO before buffered write fallback
Jiangshan Yi (1):
ntfs: remove unreachable code in load_and_init_attrdef/upcase
Karl Mehltretter (3):
ntfs: include the final partial cluster in sync writes
ntfs: fix kunmap_local() of advanced pointers in check_mft_mirror()
ntfs: fix kmap_local leak in ntfs_check_logfile()
Marek Wesołowski (1):
ntfs: fix directory lookup on large-page systems
Matthias Goergens (14):
ntfs: do not map an unmappable runlist fragment as a hole
ntfs: do not turn an unmappable runlist fragment into delalloc on write
ntfs: fail the mount when $MFT needs its own extent records
ntfs: do not map a vcn as a hole when its runlist lookup failed
ntfs: fail the mount when $MFT's data size exceeds its allocation
ntfs: reject non-resident attributes whose sizes exceed their allocation
ntfs: hold the runlist lock while expanding a non-resident attribute
ntfs: do not use a stale runlist pointer when undoing $MFT extension
ntfs: add a runlist merge that leaves the source runlist to the caller
ntfs: balance the $MFT runlist lock in data extension error paths
ntfs: set the attribute list size before reserving space for it
ntfs: restart the zone search when the allocation hint fails
ntfs: do not refuse fallocate() when the MFT zone is empty
ntfs: do not give a contiguous cluster allocation a second run
Namjae Jeon (9):
ntfs: validate and reserve bad clusters at mount
ntfs: sync attribute inode size after resize
ntfs: clear stale pagecache on initialized-size extension
ntfs: propagate EA truncate errors
ntfs: add named stream ioctls support
ntfs: add pathname access for named streams
MAINTAINERS: ntfs: add UAPI header
ntfs: document named streams
ntfs: fix NULL dereference on index allocation open failure
Xuewen Wang (7):
ntfs: preserve the 64-bit FITRIM minimum length
ntfs: bound the adjacent cluster in MFT bitmap extension
ntfs: fix rollback after MFT bitmap run coalescing
ntfs: wait for the bitmap scan before MFT bitmap extension
ntfs: account for direct MFT bitmap cluster allocation
ntfs: report birth time for symbolic links
ntfs: support persistent noatime attribute
Zhan Xusheng (4):
ntfs: do not read ahead encrypted files
ntfs: reject direct I/O reads of encrypted files
ntfs: widen the sub-block offsets in ntfs_decompress()
ntfs: fix u16 truncation of the update sequence array count check
pwngets (1):
ntfs: fix runlist marker allocation and count
Documentation/filesystems/ntfs.rst | 65 +
Documentation/userspace-api/ioctl/ioctl-number.rst | 1 +
MAINTAINERS | 1 +
fs/ntfs/Makefile | 2 +-
fs/ntfs/aops.c | 7 +-
fs/ntfs/attrib.c | 328 ++--
fs/ntfs/attrib.h | 2 +-
fs/ntfs/attrlist.c | 22 +-
fs/ntfs/bitmap.c | 72 +-
fs/ntfs/bitmap.h | 2 +
fs/ntfs/collate.c | 8 +-
fs/ntfs/compress.c | 4 +-
fs/ntfs/dir.c | 32 +-
fs/ntfs/ea.c | 567 +++---
fs/ntfs/ea.h | 11 +
fs/ntfs/file.c | 504 +++++-
fs/ntfs/index.c | 29 +-
fs/ntfs/index.h | 2 +-
fs/ntfs/inode.c | 427 ++++-
fs/ntfs/inode.h | 21 +
fs/ntfs/iomap.c | 78 +-
fs/ntfs/layout.h | 19 +-
fs/ntfs/lcnalloc.c | 35 +-
fs/ntfs/logfile.c | 13 +-
fs/ntfs/mft.c | 976 +++++++----
fs/ntfs/mft.h | 19 +-
fs/ntfs/mst.c | 4 +-
fs/ntfs/named_stream.c | 1821 ++++++++++++++++++++
fs/ntfs/namei.c | 208 ++-
fs/ntfs/ntfs.h | 11 +-
fs/ntfs/reparse.c | 2 +-
fs/ntfs/runlist.c | 103 +-
fs/ntfs/runlist.h | 3 +
fs/ntfs/stream.h | 81 +
fs/ntfs/super.c | 609 ++++++-
fs/ntfs/unistr.c | 29 +-
fs/ntfs/volume.h | 20 +
fs/ntfs/wof.c | 6 +-
include/uapi/linux/ntfs.h | 130 ++
39 files changed, 5167 insertions(+), 1107 deletions(-)
create mode 100644 fs/ntfs/named_stream.c
create mode 100644 fs/ntfs/stream.h
create mode 100644 include/uapi/linux/ntfs.h
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-10-26 2:06 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-24 4:16 [GIT PULL] ntfs update for 7.4-rc1 Namjae Jeon
2026-10-26 2:06 ` pr-tracker-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®