The exFAT file-system changes have landed for the in-development Linux 7.1 kernel.
The improvements for this Microsoft exFAT file-system driver implementation include FALLOC_FL_ALLOCATE_RANGE for helping to reduce file fragmentation. There are also optimizations and various fixes. It’s not the most active cycle for exFAT but includes:
– Implement FALLOC_FL_ALLOCATE_RANGE to add support for preallocating clusters without zeroing, helping to reduce file fragmentation.
– Add a unified block readahead helper for FAT chain conversion, bitmap allocation, and directory entry lookups.
– Optimize exfat_chain_cont_cluster() by caching buffer heads to minimize mark_buffer_dirty() and mirroring overhead during NO_FAT_CHAIN to FAT_CHAIN conversion.
– Switch to truncate_inode_pages_final() in evict_inode() to prevent BUG_ON caused by shadow entries during reclaim.
– Fix a 32-bit truncation bug in directory entry calculations by ensuring proper bitwise coercion.
– Fix sb->s_maxbytes calculation to correctly reflect the maximum possible volume size for a given cluster size, resolving xfstests generic/213.
– Introduced exfat_cluster_walk() helper to traverse FAT chains by a specified step, handling both ALLOC_NO_FAT_CHAIN and ALLOC_FAT_CHAIN modes.
– Introduced exfat_chain_advance() helper to advance an exfat_chain structure, updating both the current cluster and remaining size.
– Remove dead assignments and fix Smatch warnings.
The full list of patches can be found via the pull request that is already merged to Linux Git.
Also light on the file-system side for Linux 7.1 was the XFS merge with no new features and just bug fixes and code refactoring.
