@@ -36,6 +36,7 @@ Pull requests:
36
36
if supported
37
37
- send 'otime' (inode creation time) among other timestamps
38
38
- send file attributes (a.k.a file flags and xflags)
39
+
39
40
- this is first version bump, backward compatibility on send and
40
41
receive side is provided
41
42
- there are still some known and wanted commands that will be
@@ -439,31 +440,36 @@ Pull requests:
439
440
440
441
New features:
441
442
442
- - raid-stripe-tree: New tree for logical file extent mapping where the
443
- physical mapping may not match on multiple devices. This is now used in zoned
444
- mode to implement RAID0/RAID1* profiles, but can be used in non-zoned mode as
445
- well. The support for RAID56 is in development and will eventually fix the
446
- problems with the current implementation. This is a backward incompatible
447
- feature and has to be enabled at mkfs time.
443
+ - raid-stripe-tree:
444
+
445
+ - New tree for logical file extent mapping where the physical mapping may not
446
+ match on multiple devices. This is now used in zoned mode to implement
447
+ RAID0/RAID1* profiles, but can be used in non-zoned mode as well. The
448
+ support for RAID56 is in development and will eventually fix the problems
449
+ with the current implementation. This is a backward incompatible feature
450
+ and has to be enabled at mkfs time.
451
+
452
+ - simple quota accounting (squota):
453
+
454
+ - A simplified mode of qgroup that accounts all space on the initial extent
455
+ owners (a subvolume), the snapshots are then cheap to create and delete.
456
+ The deletion of snapshots in fully accounting qgroups is a known CPU/IO
457
+ performance bottleneck.
448
458
449
- - simple quota accounting ( squota): A simplified mode of qgroup that accounts
450
- all space on the initial extent owners (a subvolume), the snapshots are then
451
- cheap to create and delete. The deletion of snapshots in fully accounting
452
- qgroups is a known CPU/IO performance bottleneck .
459
+ - Note: The squota is not suitable for the general use case but works well
460
+ for containers where the original subvolume exists for the whole time. This
461
+ is a backward incompatible feature as it needs extending some structures,
462
+ but can be enabled on an existing filesystem .
453
463
454
- Note: The squota is not suitable for the general use case but works well for
455
- containers where the original subvolume exists for the whole time. This is a
456
- backward incompatible feature as it needs extending some structures, but can
457
- be enabled on an existing filesystem.
464
+ - temporary filesystem fsid (temp_fsid):
458
465
459
- - temporary filesystem fsid (temp_fsid): The fsid identifies a filesystem and
460
- is hard coded in the structures, which disallows mounting the same fsid found
461
- on different devices.
466
+ - The fsid identifies a filesystem and is hard coded in the structures, which
467
+ disallows mounting the same fsid found on different devices.
462
468
463
- For a single device filesystem this is not strictly necessary, a new
464
- temporary fsid can be generated on mount e.g. after a device is cloned. This
465
- will be used by Steam Deck for root partition A/B testing, or can be used for
466
- VM root images.
469
+ - For a single device filesystem this is not strictly necessary, a new
470
+ temporary fsid can be generated on mount e.g. after a device is cloned.
471
+ This will be used by Steam Deck for root partition A/B testing, or can be
472
+ used for VM root images.
467
473
468
474
- filesystems with partially finished metadata_uuid conversion cannot be
469
475
mounted anymore and the uuid fixup has to be done by btrfs-progs (btrfstune).
@@ -512,20 +518,22 @@ Pull requests:
512
518
Core changes:
513
519
514
520
- convert extent buffers to folios:
515
- - direct API conversion where possible
516
- - performance can drop by a few percent on metadata heavy
517
- workloads, the folio sizes are not constant and the calculations
518
- add up in the item helpers
519
- - both regular and subpage modes
520
- - data cannot be converted yet, we need to port that to iomap and
521
- there are some other generic changes required
521
+
522
+ - direct API conversion where possible
523
+ - performance can drop by a few percent on metadata heavy
524
+ workloads, the folio sizes are not constant and the calculations
525
+ add up in the item helpers
526
+ - both regular and subpage modes
527
+ - data cannot be converted yet, we need to port that to iomap and
528
+ there are some other generic changes required
522
529
523
530
- convert mount to the new API, should not be user visible:
524
- - options deprecated long time ago have been removed: inode_cache,
525
- recovery
526
- - the new logic that splits mount to two phases slightly changes
527
- timing of device scanning for multi-device filesystems
528
- - LSM options will now work (like for selinux)
531
+
532
+ - options deprecated long time ago have been removed: inode_cache,
533
+ recovery
534
+ - the new logic that splits mount to two phases slightly changes
535
+ timing of device scanning for multi-device filesystems
536
+ - LSM options will now work (like for selinux)
529
537
530
538
- convert delayed nodes radix tree to xarray, preserving the
531
539
preload-like logic that still allows to allocate with GFP_NOFS
@@ -576,15 +584,17 @@ Performance improvements:
576
584
delayed allocation bits, applies to several common workload types
577
585
578
586
- features under CONFIG_BTRFS_DEBUG:
579
- - sysfs knob for setting the how checksums are calculated when submitting IO,
580
- inline or offloaded to a thread, this affects latency and throughput on some
581
- block group profiles
587
+
588
+ - sysfs knob for setting the how checksums are calculated when submitting IO,
589
+ inline or offloaded to a thread, this affects latency and throughput on some
590
+ block group profiles
582
591
583
592
Notable fixes:
584
593
585
594
- fix device tracking in memory that broke grub-probe
586
595
587
596
- zoned mode fixes:
597
+
588
598
- use zone-aware super block access during scrub
589
599
- delete zones that are 100% unusable to reclaim space
590
600
@@ -643,29 +653,32 @@ Pull requests:
643
653
User visible features:
644
654
645
655
- dynamic block group reclaim:
646
- - tunable framework to avoid situations where eager data allocations prevent
647
- creating new metadata chunks due to lack of unallocated space
648
- - reuse sysfs knob bg_reclaim_threshold (otherwise used only in zoned mode)
649
- for a fixed value threshold
650
- - new on/off sysfs knob "dynamic_reclaim" calculating the value based on
651
- heuristics, aiming to keep spare working space for relocating chunks but
652
- not to needlessly relocate partially utilized block groups or reclaim newly
653
- allocated ones
654
- - stats are exported in sysfs per block group type, files "reclaim_*"
655
- - this may increase IO load at unexpected times but the corner case of no
656
- allocatable block groups is known to be worse
656
+
657
+ - tunable framework to avoid situations where eager data allocations prevent
658
+ creating new metadata chunks due to lack of unallocated space
659
+ - reuse sysfs knob bg_reclaim_threshold (otherwise used only in zoned mode)
660
+ for a fixed value threshold
661
+ - new on/off sysfs knob "dynamic_reclaim" calculating the value based on
662
+ heuristics, aiming to keep spare working space for relocating chunks but
663
+ not to needlessly relocate partially utilized block groups or reclaim newly
664
+ allocated ones
665
+ - stats are exported in sysfs per block group type, files "reclaim_*"
666
+ - this may increase IO load at unexpected times but the corner case of no
667
+ allocatable block groups is known to be worse
657
668
658
669
- automatically remove qgroup of deleted subvolumes:
659
- - adjust qgroup removal conditions, make sure all related subvolume data are
660
- already removed, or return EBUSY, also take into account setting of sysfs
661
- drop_subtree_threshold
662
- - also works in squota mode
663
670
664
- - mount option updates: new modes of 'rescue=' that allow to mount images
665
- (read-only) that could have been partially converted by user space tools
666
- - ignoremetacsums - invalid metadata checksums are ignored
667
- - ignoresuperflags - super block flags that track conversion in progress
668
- (like UUID or checksums)
671
+ - adjust qgroup removal conditions, make sure all related subvolume data are
672
+ already removed, or return EBUSY, also take into account setting of sysfs
673
+ drop_subtree_threshold
674
+ - also works in squota mode
675
+
676
+ - mount option updates: new modes of 'rescue=' that allow to mount images
677
+ (read-only) that could have been partially converted by user space tools
678
+
679
+ - ignoremetacsums - invalid metadata checksums are ignored
680
+ - ignoresuperflags - super block flags that track conversion in progress
681
+ (like UUID or checksums)
669
682
670
683
Other notable changes or fixes:
671
684
@@ -771,15 +784,17 @@ Performance improvements:
771
784
Core changes:
772
785
773
786
- raid-stripe-tree feature updates:
774
- - make device replace and scrub work
775
- - implement partial deletion of stripe extents
776
- - new selftests
787
+
788
+ - make device replace and scrub work
789
+ - implement partial deletion of stripe extents
790
+ - new selftests
777
791
778
792
- split the config option BTRFS_DEBUG and add EXPERIMENTAL for
779
793
features that are experimental or with known problems so we don't
780
794
misuse debugging config for that
781
795
782
796
- subpage mode updates (sector < page):
797
+
783
798
- update compression implementations
784
799
- update writepage, writeback
785
800
@@ -840,27 +855,30 @@ Core:
840
855
(post-read, pre-write)
841
856
842
857
- subpage mode fixes:
843
- - fix double accounting of blocks due to some races
844
- - improved or fixed error handling in a few cases (compression,
845
- delalloc)
858
+
859
+ - fix double accounting of blocks due to some races
860
+ - improved or fixed error handling in a few cases (compression,
861
+ delalloc)
846
862
847
863
- raid stripe tree:
848
- - fix various cases with extent range splitting or deleting
849
- - implement hole punching to extent range
850
- - reduce number of stripe tree lookups during bio submission
851
- - more self-tests
864
+
865
+ - fix various cases with extent range splitting or deleting
866
+ - implement hole punching to extent range
867
+ - reduce number of stripe tree lookups during bio submission
868
+ - more self-tests
852
869
853
870
- updated self-tests (delayed refs)
854
871
855
872
- error handling improvements
856
873
857
874
- cleanups, refactoring
858
- - remove rest of backref caching infrastructure from relocation,
859
- not needed anymore
860
- - error message updates
861
- - remove unnecessary calls when extent buffer was marked dirty
862
- - unused parameter removal
863
- - code moved to new files
875
+
876
+ - remove rest of backref caching infrastructure from relocation,
877
+ not needed anymore
878
+ - error message updates
879
+ - remove unnecessary calls when extent buffer was marked dirty
880
+ - unused parameter removal
881
+ - code moved to new files
864
882
865
883
6.15 (May 2025)
866
884
^^^^^^^^^^^^^^^
@@ -2036,7 +2054,7 @@ Fixes:
2036
2054
^^^^^^^^^^^^^^
2037
2055
2038
2056
* restriper - infrastructure to change btrfs raid profiles on the fly via balance
2039
- * optional integrity checker infrastructure ([ http://lwn.net/Articles/466493/ details] )
2057
+ * optional integrity checker infrastructure (http://lwn.net/Articles/466493)
2040
2058
* fixed a few corner cases where TRIM did not process some blocks
2041
2059
* cluster allocator improvements (less fragmentation, some speedups)
2042
2060
@@ -2073,8 +2091,8 @@ Fixes:
2073
2091
^^^^^^^^^^^^^^
2074
2092
2075
2093
* subvolume-aware quotas (''qgroups'')
2076
- * support for send/receive between snapshot changes ([ http://lwn.net/Articles/506244/ LWN article] )
2077
- * ''atime'' is not updated on read-only snapshots ([ http://lwn.net/Articles/499293/ LWN article] )
2094
+ * support for send/receive between snapshot changes (http://lwn.net/Articles/506244)
2095
+ * ''atime'' is not updated on read-only snapshots (http://lwn.net/Articles/499293)
2078
2096
* allowed cross-subvolume file clone (aka. reflink)
2079
2097
* remount with ''no'' compression possible
2080
2098
* new ioctl to read device readiness status
@@ -2085,37 +2103,37 @@ Fixes:
2085
2103
2086
2104
* ''fsync'' speedups
2087
2105
* removed limitation of number of hardlinks in a single directory
2088
- * file hole punching ([ http://lwn.net/Articles/415889/ LWN article] )
2106
+ * file hole punching (http://lwn.net/Articles/415889)
2089
2107
* per-file ''NOCOW''
2090
2108
* fixes to send/receive
2091
2109
2092
2110
3.8 (Feb 2013)
2093
2111
^^^^^^^^^^^^^^
2094
2112
2095
- * ability to replace devices at runtime in an effective way ([ http://lwn.net/Articles/524589/ description] )
2113
+ * ability to replace devices at runtime in an effective way (http://lwn.net/Articles/524589)
2096
2114
* speed improvements (cumulative effect of many small improvements)
2097
2115
* a few more bugfixes
2098
2116
2099
2117
3.9 (Apr 2013)
2100
2118
^^^^^^^^^^^^^^
2101
2119
2102
- * preliminary Raid 5/6 support (details in the [ http://www.spinics.net/lists/linux-btrfs/msg22169.html announcement] )
2120
+ * preliminary Raid 5/6 support (details in http://www.spinics.net/lists/linux-btrfs/msg22169.html)
2103
2121
* snapshot-aware defrag
2104
2122
* a mode of ''send'' to avoid transferring file data
2105
- * direct IO speedup ([ https://patchwork.kernel.org/patch/2114921/ numbers] )
2123
+ * direct IO speedup (https://patchwork.kernel.org/patch/2114921)
2106
2124
* new ''ioctl''s to set/get filesystem label
2107
2125
* defrag is cancellable
2108
2126
2109
2127
3.10 (Jun 2013)
2110
2128
^^^^^^^^^^^^^^^
2111
2129
2112
- * reduced size of metadata by so-called :ref: `skinny extents<mkfs-feature-skinny-metadata> ` [ http://git.kernel.org/linus/3173a18f70554fe7880bb2d85c7da566e364eb3c]
2113
- * enhanced syslog message format [ http://permalink.gmane.org/gmane.comp.file-systems.btrfs/24330]
2130
+ * reduced size of metadata by so-called :ref: `skinny extents<mkfs-feature-skinny-metadata> ` ( http://git.kernel.org/linus/3173a18f70554fe7880bb2d85c7da566e364eb3c)
2131
+ * enhanced syslog message format ( http://permalink.gmane.org/gmane.comp.file-systems.btrfs/24330)
2114
2132
* the mount option ''subvolrootid'' is deprecated
2115
2133
* lots of stability improvements, removed many< BUG_ONs
2116
- * qgroups are automatically created when quotas are enabled [ http://git.kernel.org/linus/7708f029dca5f1b9e9d6ea01ab10cd83e4c74ff2]
2134
+ * qgroups are automatically created when quotas are enabled ( http://git.kernel.org/linus/7708f029dca5f1b9e9d6ea01ab10cd83e4c74ff2)
2117
2135
* qgroups are able to ''rescan'' current filesystem and sync the quota state with the existing subvolumes
2118
- * enhanced ''send/recv '' format for multiplexing more data into one stream [ http://git.kernel.org/linus/c2c71324ecb471c932bc1ff59e46ffcf82f274fc]
2136
+ * enhanced ''send/recv '' format for multiplexing more data into one stream ( http://git.kernel.org/linus/c2c71324ecb471c932bc1ff59e46ffcf82f274fc)
2119
2137
* various unsorted code cleanups, minor performance updates
2120
2138
2121
2139
3.11 (Sep 2013)
@@ -2159,29 +2177,29 @@ Fixes:
2159
2177
3.16 (Aug 2014)
2160
2178
^^^^^^^^^^^^^^^
2161
2179
2162
- * ''O_TMPFILE'' support [ http://kernelnewbies.org/Linux_3.11#head-8be09d59438b31c2a724547838f234cb33c40357]
2180
+ * ''O_TMPFILE'' support ( http://kernelnewbies.org/Linux_3.11#head-8be09d59438b31c2a724547838f234cb33c40357)
2163
2181
* reworked qgroup accounting, to fix negative numbers after subvol deletion
2164
- * SEARCH_TREE ioctl v2, extended for retrieving more data [ http://www.spinics.net/lists/linux-btrfs/msg31213.html]
2165
- * new balance filter ''limit'' for more finegrained balancing [ http://www.spinics.net/lists/linux-btrfs/msg33872.html]
2182
+ * SEARCH_TREE ioctl v2, extended for retrieving more data ( http://www.spinics.net/lists/linux-btrfs/msg31213.html)
2183
+ * new balance filter ''limit'' for more finegrained balancing ( http://www.spinics.net/lists/linux-btrfs/msg33872.html)
2166
2184
* ioctl FS_INFO and it's sysfs counterpart export information about ''nodesize'', ''sectorsize'' and ''clone_alignment''
2167
2185
* snapshots are protected during send
2168
2186
2169
2187
3.17 (Oct 2014)
2170
2188
^^^^^^^^^^^^^^^
2171
2189
2172
- * fix for the infamous deadlock [ https://git.kernel.org/linus/9e0af23764344f7f1b68e4eefbe7dc865018b63d]
2173
- * fixed longstanding bug in qgroups accounting after snapshot deletion [ https://git.kernel.org/linus/1152651a081720ef6a8c76bb7da676e8c900ac30]
2174
- * updated (less inaccurate) ''df'' numbers [ https://git.kernel.org/linus/ba7b6e62f420f5a8832bc161ab0c7ba767f65b3d]
2175
- * speedup for ''rename'' and ''truncate'', less strict flushes [ https://git.kernel.org/linus/8d875f95da43c6a8f18f77869f2ef26e9594fecc]
2190
+ * fix for the infamous deadlock ( https://git.kernel.org/linus/9e0af23764344f7f1b68e4eefbe7dc865018b63d)
2191
+ * fixed longstanding bug in qgroups accounting after snapshot deletion ( https://git.kernel.org/linus/1152651a081720ef6a8c76bb7da676e8c900ac30)
2192
+ * updated (less inaccurate) ''df'' numbers ( https://git.kernel.org/linus/ba7b6e62f420f5a8832bc161ab0c7ba767f65b3d)
2193
+ * speedup for ''rename'' and ''truncate'', less strict flushes ( https://git.kernel.org/linus/8d875f95da43c6a8f18f77869f2ef26e9594fecc)
2176
2194
* updated and fixes to the ''seeding'' feature
2177
2195
2178
2196
3.17 (Oct 2014)
2179
2197
^^^^^^^^^^^^^^^
2180
2198
2181
- * fix for the infamous deadlock [ https://git.kernel.org/linus/9e0af23764344f7f1b68e4eefbe7dc865018b63d]
2182
- * fixed longstanding bug in qgroups accounting after snapshot deletion [ https://git.kernel.org/linus/1152651a081720ef6a8c76bb7da676e8c900ac30]
2183
- * updated (less inaccurate) ''df'' numbers [ https://git.kernel.org/linus/ba7b6e62f420f5a8832bc161ab0c7ba767f65b3d]
2184
- * speedup for ''rename'' and ''truncate'', less strict flushes [ https://git.kernel.org/linus/8d875f95da43c6a8f18f77869f2ef26e9594fecc]
2199
+ * fix for the infamous deadlock ( https://git.kernel.org/linus/9e0af23764344f7f1b68e4eefbe7dc865018b63d]
2200
+ * fixed longstanding bug in qgroups accounting after snapshot deletion ( https://git.kernel.org/linus/1152651a081720ef6a8c76bb7da676e8c900ac30)
2201
+ * updated (less inaccurate) ''df'' numbers ( https://git.kernel.org/linus/ba7b6e62f420f5a8832bc161ab0c7ba767f65b3d)
2202
+ * speedup for ''rename'' and ''truncate'', less strict flushes ( https://git.kernel.org/linus/8d875f95da43c6a8f18f77869f2ef26e9594fecc)
2185
2203
* updated and fixes to the ''seeding'' feature
2186
2204
2187
2205
3.18 (Dec 2014)
@@ -2211,8 +2229,7 @@ get/set ioctl, allow compression during defrag.
2211
2229
2212
2230
On-disk free space cache, asynchronous snapshots, unprivileged subvolume
2213
2231
deletion, extent buffer switches from a rbtree with spinlocks to a radix tree
2214
- with RCU. (Explanations of these features are described in
2215
- [http://www.linux-mag.com/id/7945 this] article [registration needed]).
2232
+ with RCU.
2216
2233
2217
2234
2.6.35 (August 2010)
2218
2235
^^^^^^^^^^^^^^^^^^^^
@@ -2245,16 +2262,16 @@ of space and still show some free space. That space comes from a data/metadata
2245
2262
chunk that can't get filled because there's not space left to create its
2246
2263
metadata/data counterpart chunk. This is unrelated to the -ENOSPC handling and
2247
2264
will be fixed in the future. Code:
2248
- [ http://git.kernel.org/linus/9ed74f2dba6ebf9f30b80554290bfc73cc3ef083 (commit)]
2265
+ ( http://git.kernel.org/linus/9ed74f2dba6ebf9f30b80554290bfc73cc3ef083)
2249
2266
2250
2267
Proper snapshot and subvolume deletion
2251
2268
2252
2269
In the last btrfs-progs version you have options that allow to delete snapshots
2253
2270
and subvolumes without having to use rm. This is much faster because it does
2254
2271
the deletion via btree walking. It's also now possible to rename snapshots and
2255
2272
subvols. Work done by Yan Zheng (Oracle). Code:
2256
- [ http://git.kernel.org/linus/4df27c4d5cc1dda54ed7d0a8389347f2df359cf9 (commit
2257
- 1)], [ http://git.kernel.org/linus/76dda93c6ae2c1dc3e6cde34569d6aca26b0c918 2)]
2273
+ ( http://git.kernel.org/linus/4df27c4d5cc1dda54ed7d0a8389347f2df359cf9,
2274
+ http://git.kernel.org/linus/76dda93c6ae2c1dc3e6cde34569d6aca26b0c918)
2258
2275
2259
2276
Performance improvements
2260
2277
@@ -2270,9 +2287,8 @@ Support for "discard" operation on SSD devices
2270
2287
2271
2288
"Discard" support is a way to telling SSD devices which blocks are free so that
2272
2289
the underlying firmware knows that it's safe to do some optimizations
2273
- [http://git.kernel.org/linus/e244a0aeb6a599c19a7c802cda6e2d67c847b154
2274
- (commit)],
2275
- [http://git.kernel.org/linus/0634857488ec6e28fa22920cd0bee3c2ac07ccfd (commit)]
2290
+ (http://git.kernel.org/linus/e244a0aeb6a599c19a7c802cda6e2d67c847b154,
2291
+ http://git.kernel.org/linus/0634857488ec6e28fa22920cd0bee3c2ac07ccfd )
2276
2292
2277
2293
0.x
2278
2294
---
0 commit comments