exFAT For Linux 7.1 Helps Reduce File Fragmentation, Fixes
([Linux Storage] 6 Hours Ago
exFAT)
- Reference: 0001627087
- News link: https://www.phoronix.com/news/Linux-7.1-exFAT
- Source link:
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
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