News: 0001627087

  ARM Give a man a fire and he's warm for a day, but set fire to him and he's warm for the rest of his life (Terry Pratchett, Jingo)

exFAT For Linux 7.1 Helps Reduce File Fragmentation, Fixes

([Linux Storage] 6 Hours Ago exFAT)


The exFAT file-system changes have landed for the in-development [1]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 [2]the pull request that is already merged to Linux Git.

Also light on the file-system side for Linux 7.1 was the [3]XFS merge with no new features and just bug fixes and code refactoring.



[1] https://www.phoronix.com/search/Linux+7.1

[2] https://lore.kernel.org/lkml/CAKYAXd8_XL8XqEa5t9H_0mvRBu8WRhNhkphRWUoR+8zbkukNQg@mail.gmail.com/

[3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0b0128e64af056a7dd29fa3bc780af654e53f861



What's so funny?