[GIT PULL] exfat update for 7.4-rc1
From: Namjae Jeon
Date: Sat Oct 24 2026 - 00:16:40 EST
Hi Linus,
This is exfat update pull request for v7.4-rc1. I add a description of
this pull request below. Please pull exfat with following ones.
Thanks!
The following changes since commit 4a8bdffce502d70405391a7ac38bac6dcef94749:
Merge tag 'x86_tdx_for_7.4-rc1' of
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip (2026-10-20
12:17:47 -1000)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat.git
tags/exfat-for-7.4-rc1
for you to fetch changes up to 8534eb11ac056dc2ca08007cf76d3ae7cbe42684:
exfat: fix reading a directory whose FAT chain is longer than its
size (2026-10-21 08:28:32 +0900)
----------------------------------------------------------------
- Use the recalculated append position when advancing valid_size, dirty
all pages involved in valid-data extension, and zero invalid tails on
partial overwrites. Write-protect the folio spanning the old EOF and
zero its post-EOF range when extending a file, ensuring subsequent mmap
writes advance valid_size.
- Make valid_size and zeroed_size atomic to prevent torn reads and lost
updates. Hold the invalidate lock during truncation, and drain in-flight
direct I/O before buffered writes, buffered fallback, and page-cache
operations that extend valid_size.
- Fall back to single-cluster allocation when a buffered write cannot
allocate its entire range, allowing writes to consume the remaining
free space and return a short count.
- Free clusters allocated beyond EOF after failed or short writes to
prevent leaked space and spurious ENOSPC errors on later writes or
file extensions.
- Clean block-device buffer aliases when allocating clusters so delayed
directory metadata writeback cannot overwrite file data after cluster
reuse.
- Update used_clusters as each cluster is allocated so partial-allocation
cleanup keeps free-space accounting consistent. Acquire bitmap_lock
before checking available space to serialize the check with allocation.
- Use swap-specific iomap operations to report allocated extents beyond
valid_size as unwritten during swap activation, retaining byte-accurate
SEEK_HOLE and SEEK_DATA reporting in regular I/O.
- Check allocation flags, vendor GUIDs, cluster numbers, data lengths,
and contiguous extents in Vendor Allocation directory entries. Read
complete entry sets during lookup so malformed trailing entries cannot
bypass validation.
- Follow directory FAT chains to their actual end when the recorded size
is too small, supporting devices that leave directory sizes stale.
Handle reads after seeking past the directory end.
- Clear the volume dirty flag during remount only when switching to
read-only without SB_FORCE. Update percent_in_use when changing volume
flags, reporting unknown usage while the volume is dirty or persistent
flags prevent marking it clean.
- Replace runtime division by powers of two with bit operations.
- Document supported mount options, and exfatprogs, and add
the documentation path to MAINTAINERS.
----------------------------------------------------------------
Chi Zhiling (7):
exfat: fix used_clusters accounting during cluster allocation
exfat: take bitmap_lock at the start of exfat_alloc_cluster()
exfat: clear the volume dirty flag only when remounting read-only
exfat: advance valid_size to EOF for append writes
exfat: hold the invalidate lock while truncating
exfat: dirty all new pages when extending valid_size
exfat: make valid_size and zeroed_size atomic
David Timber (2):
exfat: update percent_in_use field when updating volume flags
exfat: remove runtime integer division
Hengyu Liang (3):
exfat: fix a large buffered write failing when the volume is nearly full
exfat: free clusters beyond EOF when a write fails or is short
exfat: fix reading a directory whose FAT chain is longer than its size
Jiale Yao (1):
exfat: drain in-flight DIO before buffered writes
Namjae Jeon (4):
exfat: map allocated extents for swap activation
exfat: doc: add documentation
MAINTAINERS: add exFAT documentation
exfat: zero invalid tail on partial overwrites
Nicolas Falesy (1):
exfat: clean stale bdev buffers of newly allocated clusters
Yang Wen (1):
exfat: validate vendor allocation directory entries
Yuezhang Mo (1):
exfat: mark straddling folio RO and zero the post-EOF range
Documentation/filesystems/exfat.rst | 117 ++++++++++++++++
Documentation/filesystems/index.rst | 1 +
MAINTAINERS | 1 +
fs/exfat/dir.c | 52 +++++++-
fs/exfat/exfat_fs.h | 89 ++++++++++--
fs/exfat/fatent.c | 46 +++++--
fs/exfat/file.c | 260 ++++++++++++++++++++----------------
fs/exfat/inode.c | 16 ++-
fs/exfat/iomap.c | 81 +++++++++--
fs/exfat/namei.c | 11 +-
fs/exfat/super.c | 30 ++++-
11 files changed, 535 insertions(+), 169 deletions(-)
create mode 100644 Documentation/filesystems/exfat.rst