Ahead of the Linux 6.16 merge window opening, several early pull requests were already sent out this week in advance of Linux 6.15 expected for release later today. Among those early feature pulls was Btrfs maintainer David Sterba sending out updates to this advanced copy-on-write file-system.
With Btrfs for Linux 6.16 the most interesting aspect are continued performance improvements. There is some extent buffer conversion work yielding some throughput and runtime improvements for metadata heavy operations. Plus some other clean-ups leading to some nice gains and other efficiency work. The Btrfs performance work for Linux 6.16 includes:
"- extent buffer conversion to xarray gains throughput and runtime improvements on metadata heavy operations doing writeback (sample test shows +50% throughput, -33% runtime)- extent io tree cleanups lead to performance improvements by avoiding unnecessary searches or repeated searches
- more efficient extent unpinning when committing transaction (estimated run time improvement 3-5%)"
There is also a variety of other smaller changes to find with this Btrfs update too:
"User visible changes:- remove standalone mount option 'nologreplay', deprecated in 5.9, replacement is 'rescue=nologreplay'
- in scrub, update reporting, add back device stats message after detected errors (accidentally removed during recent refactoring)
Core:
- convert extent buffer radix tree to xarray
- in subpage mode, move block perfect compression out of experimental build
- in zoned mode, introduce sub block groups to allow managing special block groups, like the one for relocation or tree-log, to handle some corner cases of ENOSPC
- in scrub, simplify bitmaps for block tracking status
- continued preparations for large folios
- remove assertions for folio order 0
- add support where missing: compression, buffered write, defrag, hole punching, subpage, send
- fix fsync of files with no hard links not persisting deletion
- reject tree blocks which are not nodesize aligned, a precaution from 4.9 times
- move transaction abort calls closer to the error sites
- remove usage of some struct bio_vec internals
- simplifications in extent map
- extent IO cleanups and optimizations
- error handling improvements
- enhanced ASSERT() macro with optional format strings"
More details for those interested via this pull request.