@@ -627,7 +627,6 @@ Notable fixes or changes:
627627
628628- extent map shrinker, allow memory consumption reduction for direct io loads
629629
630-
6316306.11 (Sep 2024)
632631^^^^^^^^^^^^^^^
633632
@@ -702,6 +701,33 @@ Pull requests:
702701`v6.12-rc7 <https://git.kernel.org/linus/9183e033ec4f8bdac778070ebccdd41727da2305 >`__,
703702`v6.12 <https://git.kernel.org/linus/c9dd4571ad38654f26c07ff2b7c7dba03301fc76 >`__
704703
704+ User visible changes:
705+
706+ - the FSTRIM ioctl updates the processed range even after an error or interruption
707+
708+ - cleaner thread is woken up in SYNC ioctl instead of waking the transaction
709+ thread that can take some delay before waking up the cleaner, this can speed
710+ up cleaning of deleted subvolumes
711+
712+ - print an error message when opening a device fail, e.g. when it's unexpectedly read-only
713+
714+ Core changes:
715+
716+ - improved extent map handling in various ways (locking, iteration, ...)
717+ - new assertions and locking annotations
718+ - raid-stripe-tree locking fixes
719+ - use xarray for tracking dirty qgroup extents, switched from rb-tree
720+ - turn the subpage test to compile-time condition if possible (e.g. on x86_64
721+ with 4K pages), this allows to skip a lot of ifs and remove dead code
722+ - more preparatory work for compression in subpage mode
723+
724+ Cleanups and refactoring:
725+
726+ - folio API conversions, many simple cases where page is passed so switch it to
727+ folios
728+ - more subpage code refactoring, update page state bitmap processing
729+ - introduce auto free for btrfs_path structure, use for the simple cases
730+
7057316.13 (Jan 2025)
706732^^^^^^^^^^^^^^^
707733
@@ -714,6 +740,128 @@ Pull requests:
714740`v6.13-rc7 <https://git.kernel.org/linus/643e2e259c2b25a2af0ae4c23c6e16586d9fd19c >`__,
715741`v6.13 <https://git.kernel.org/linus/ed8fd8d5dd4aa250e18152b80cbac24de7335488 >`__
716742
743+ User visible changes:
744+
745+ - wire encoded read (ioctl) to io_uring commands, this can be used on itself,
746+ in the future this will allow 'send' to be asynchronous. As a consequence,
747+ the encoded read ioctl can also work in non-blocking mode
748+
749+ - new ioctl to wait for cleaned subvolumes, no need to use the generic and
750+ root-only SEARCH_TREE ioctl, will be used by "btrfs subvol sync"
751+
752+ - recognize different paths/symlinks for the same devices and don't report them
753+ during rescanning, this can be observed with LVM or DM
754+
755+ - seeding device use case change, the sprout device (the one capturing new
756+ writes) will not clear the read-only status of the super block; this prevents
757+ accumulating space from deleted snapshots
758+
759+ - swapfile activation updates that are nice to CPU and activation is interruptible
760+
761+ Performance improvements:
762+
763+ - reduce lock contention when traversing extent buffers
764+ - reduce extent tree lock contention when searching for inline backref
765+ - switch from rb-trees to xarray for delayed ref tracking, improvements due to
766+ better cache locality, branching factors and more compact data structures
767+ - enable extent map shrinker again (prevent memory exhaustion under some types
768+ of IO load), reworked to run in a single worker thread (there used to be
769+ problems causing long stalls under memory pressure)
770+
771+ Core changes:
772+
773+ - raid-stripe-tree feature updates:
774+ - make device replace and scrub work
775+ - implement partial deletion of stripe extents
776+ - new selftests
777+
778+ - split the config option BTRFS_DEBUG and add EXPERIMENTAL for
779+ features that are experimental or with known problems so we don't
780+ misuse debugging config for that
781+
782+ - subpage mode updates (sector < page):
783+ - update compression implementations
784+ - update writepage, writeback
785+
786+ - continued folio API conversions, buffered writes
787+ - make buffered write copy one page at a time, preparatory work for
788+ future integration with large folios, may cause performance drop
789+ - proper locking of root item regarding starting send
790+ - error handling improvements
791+
792+ - code cleanups and refactoring:
793+
794+ - dead code removal
795+ - unused parameter reduction
796+ - lockdep assertions
797+
798+ 6.14 (Mar 2025)
799+ ^^^^^^^^^^^^^^^
800+
801+ Pull requests:
802+ `v6.14-rc1 <https://git.kernel.org/linus/0eb4aaa230d725fa9b1cd758c0f17abca5597af6 >`__,
803+ `v6.14-rc2 <https://git.kernel.org/linus/92514ef226f511f2ca1fb1b8752966097518edc0 >`__,
804+ `v6.14-rc3 <https://git.kernel.org/linus/945ce413ac14388219afe09de84ee08994f05e53 >`__,
805+ `v6.14-rc5 <https://git.kernel.org/linus/cc8a0934d099b8153fc880a3588eec4791a7bccb >`__,
806+ `v6.14-rc6 <https://git.kernel.org/linus/6ceb6346b0436ea6591c33ab6ab22e5077ed17e7 >`__,
807+
808+
809+ User visible changes, features:
810+
811+ - rebuilding of the free space tree at mount time is done in more transactions,
812+ fix potential hangs when the transaction thread is blocked due to large
813+ amount of block groups
814+
815+ - more read IO balancing strategies (experimental config), add two new ways how
816+ to select a device for read if the profiles allow that (all RAID1*), the
817+ current default selects the device by pid which is good on average but less
818+ performant for single reader workloads
819+
820+ - select preferred device for all reads (namely for testing)
821+ - round-robin, balance reads across devices relevant for the requested IO range
822+
823+ - add encoded write ioctl support to io_uring (read was added in
824+ 6.12), basis for writing send stream using that instead of
825+ syscalls, non-blocking mode is not yet implemented
826+
827+ - support FS_IOC_READ_VERITY_METADATA, applications can use the
828+ metadata to do their own verification
829+
830+ - pass inode's i_write_hint to bios, for parity with other
831+ filesystems, ioctls F_GET_RW_HINT/F_SET_RW_HINT
832+
833+ Core:
834+
835+ - in zoned mode: allow to directly reclaim a block group by simply
836+ resetting it, then it can be reused and another block group does
837+ not need to be allocated
838+
839+ - super block validation now also does more comprehensive sys array
840+ validation, adding it to the points where superblock is validated
841+ (post-read, pre-write)
842+
843+ - subpage mode fixes:
844+ - fix double accounting of blocks due to some races
845+ - improved or fixed error handling in a few cases (compression,
846+ delalloc)
847+
848+ - raid stripe tree:
849+ - fix various cases with extent range splitting or deleting
850+ - implement hole punching to extent range
851+ - reduce number of stripe tree lookups during bio submission
852+ - more self-tests
853+
854+ - updated self-tests (delayed refs)
855+
856+ - error handling improvements
857+
858+ - cleanups, refactoring
859+ - remove rest of backref caching infrastructure from relocation,
860+ not needed anymore
861+ - error message updates
862+ - remove unnecessary calls when extent buffer was marked dirty
863+ - unused parameter removal
864+ - code moved to new files
717865
7188665.x
719867---
0 commit comments