Btrfs With Linux 6.2 Bringing Performance Improvements, Better RAID 5/6 Reliability
The EXT4 pull request sent out this morning has a bunch of clean-ups and bug fixes. Many of the fixes to the EXT4 come as a result of Syzbot and fuzzing of the file-system driver. But for end-users the EXT4 changes aren't too notable or exciting for this mature file-system.
When it comes to Btrfs with Linux 6.2 is where it's more interesting with performance work and enhancing the RAID 5/6 operation. Btrfs' RAID 5/6 code was in bad shape years ago but has been seeing fixes over the past few years. But still as of last year users were "strongly discouraged" from creating Btrfs RAID5/RAID6 arrays.
Btrfs RAID 5/6 support is slowly improving...
With Linux 6.2 there are various reliability improvements for this native RAID 5/6 mode:
- raid56 reliability vs performance trade off
- fix destructive RMW for raid5 data (raid6 still needs work) - do full RMW cycle for writes and verify all checksums before overwrite, this should prevent rewriting potentially corrupted data without notice
- stripes are cached in memory which should reduce the performance impact but still can hurt some workloads
- checksums are verified after repair again
- this is the last option without introducing additional features (write intent bitmap, journal, another tree), the RMW cycle was supposed to beavoided by the original implementation exactly for performance reasons but that caused all the reliability problems
Aside from the RAID5/RAID6 work, Btrfs with Linux 6.2 now enables async discard by default for supported devices. Btrfs also lands a flush emergency reserve feature and has a variety of performance improvements to the fiemap / lseek / send code. The Btrfs code has also seen work in preparing for eventual FSCRYPT support for native file-system encryption via that Linux encryption framework.
Overall the Btrfs patches for Linux 6.2 is a rather exciting mix of improvements.