diff --git a/Documentation/Kernel-by-version.rst b/Documentation/Kernel-by-version.rst index 11656f96..d9c0ec5b 100644 --- a/Documentation/Kernel-by-version.rst +++ b/Documentation/Kernel-by-version.rst @@ -9,6 +9,14 @@ Summary of kernel changes for each version. 6.0 (Oct 2022) ^^^^^^^^^^^^^^ +Pull requests: +`v6.0-rc1 `__, +`v6.0-rc1 `__, +`v6.0-rc2 `__, +`v6.0-rc3 `__, +`v6.0-rc5 `__, +`v6.0-rc7 `__ + - sysfs updates: - export chunk size, in debug mode add tunable for setting its size @@ -94,6 +102,15 @@ Notable fixes: 6.1 (Dec 2022) ^^^^^^^^^^^^^^ +Pull requests: +`v6.1-rc1 `__, +`v6.1-rc1 `__, +`v6.1-rc2 `__, +`v6.1-rc4 `__, +`v6.1-rc4 `__, +`v6.1-rc5 `__, +`v6.1-rc7 `__ + Performance: - outstanding FIEMAP speed improvements: @@ -170,6 +187,16 @@ Core: 6.2 (Feb 2023) ^^^^^^^^^^^^^^ +Pull requests: +`v6.2-rc1 `__, +`v6.2-rc3 `__, +`v6.2-rc3 `__, +`v6.2-rc5 `__, +`v6.2-rc5 `__, +`v6.2-rc5 `__, +`v6.2-rc8 `__, +`v6.2-rc8 `__ + User visible features: - raid56 reliability vs performance trade off: @@ -222,6 +249,14 @@ Fixes: 6.3 (Apr 2023) ^^^^^^^^^^^^^^ +Pull requests: +`v6.3-rc1 `__, +`v6.3-rc2 `__, +`v6.3-rc4 `__, +`v6.3-rc5 `__, +`v6.3-rc7 `__, +`v6.3 `__ + Features: - block group allocation class heuristics: @@ -275,15 +310,104 @@ Fixes: new value for maximum active threads would not be set to the actual work queues (since 6.0) -6.4 (Jun 2022) +6.4 (Jun 2023) ^^^^^^^^^^^^^^ +Pull requests: +`v6.4-rc1 `__, +`v6.4-rc2 `__, +`v6.4-rc2 `__, +`v6.4-rc4 `__, +`v6.4-rc5 `__, +`v6.4-rc5 `__, +`v6.4-rc7 `__, +`v6.4-rc7 `__, +`v6.4 `__, +`v6.4 `__ + +Performance improvements: + +- improve logging changes in a directory during one transaction, avoid + iterating over items and reduce lock contention (fsync time 4x lower) +- when logging directory entries during one transaction, reduce locking + of subvolume trees by checking tree-log instead (improvement in + throughput and latency for concurrent access to a subvolume) + +Notable fixes: + +- device replace: + + - properly honor read mode when requested to avoid reading from source device + - target device won't be used for eventual read repair, this is + unreliable for NODATASUM files + - when there are unpaired (and unrepairable) metadata during replace, + exit early with error and don't try to finish whole operation +- scrub ioctl properly rejects unknown flags +- fix partial direct io write when there's a page fault in the middle, + iomap will try to continue with partial request but the btrfs part did + not match that, this can lead to zeros written instead of data +- fix backref walking, this breaks a mode of LOGICAL_INO_V2 ioctl that + is used in deduplication tools +- make mount option clear_cache work with block-group-tree, to rebuild + free-space-tree instead of temporarily disabling it that would lead to + a forced read-only mount + +Core changes: + +- io path + + - continued cleanups and refactoring around bio handling + - extent io submit path simplifications and cleanups + - flush write path simplifications and cleanups + - rework logic of passing sync mode of bio, with further cleanups +- rewrite scrub code flow, restructure how the stripes are enumerated + and verified in a more unified way +- allow to set lower threshold for block group reclaim in debug mode to + aid zoned mode testing +- remove obsolete time-based delayed ref throttling logic when + truncating items + +6.5 (Aug? 2023) +^^^^^^^^^^^^^^^ + +Pull requests: +`v6.5-rc1 `__, +`v6.5-rc3 `__, +`v6.5-rc4 `__, +`v6.5-rc6 `__, +`v6.5-rc7 `__ + +Performance improvements: + +- speedup in fsync(), better tracking of inode logged status can avoid + transaction commit +- IO path structures track logical offsets in data structures and does + not need to look it up +- submit IO synchronously for fast checksums (crc32c and xxhash), remove + high priority worker kthread + +User visible changes: + +- don't commit transaction for every created subvolume, this can reduce + time when many subvolumes are created in a batch +- print affected files when relocation fails +- trigger orphan file cleanup during START_SYNC ioctl +- the ``async=discard`` has been enabled in 6.2 unconditionally, but for + zoned mode it does not make that much sense to do it asynchronously as + the zones are reset as needed + 5.x --- 5.0 (Mar 2019) ^^^^^^^^^^^^^^ +Pull requests: +`v5.0-rc1 `__, +`v5.0-rc2 `__, +`v5.0-rc3 `__, +`v5.0-rc5 `__ + Features, hilights: - swapfile support (with some limitations) @@ -293,7 +417,7 @@ Features, hilights: Fixes: - improved check of filesystem id associated with a device during scan to - detect duplicate devices that could be mixed up during mount + detect duplicate devices that could be mixed up during mount - fix device replace state transitions - fix a crash due to a race when quotas are enabled during snapshot creation - GFP_NOFS/memalloc_nofs_* fixes @@ -309,6 +433,13 @@ Other: 5.1 (May 2019) ^^^^^^^^^^^^^^ +Pull requests: +`v5.1-rc1 `__, +`v5.1-rc1 `__, +`v5.1-rc3 `__, +`v5.1-rc5 `__, +`v5.1-rc7 `__ + New features, hilights: - zstd compression levels can be set as mount options @@ -327,6 +458,13 @@ Other changes: 5.2 (Jul 2019) ^^^^^^^^^^^^^^ +Pull requests: +`v5.2-rc1 `__, +`v5.2-rc2 `__, +`v5.2-rc3 `__, +`v5.2-rc5 `__, +`v5.2-rc6 `__ + User visible changes, hilights: - better read time and write checks to catch errors early and before writing data to disk @@ -353,11 +491,18 @@ Other: - new tracepoints for locking - async write preallocates memory to avoid failures deep in call chains - lots of cleanups -- see [https://git.kernel.org/linus/9f2e3a53f7ec9ef55e9d01bc29a6285d291c151e pull request] 5.3 (Sep 2019) ^^^^^^^^^^^^^^ +Pull requests: +`v5.3-rc1 `__, +`v5.3-rc2 `__, +`v5.3-rc2 `__, +`v5.3-rc3 `__, +`v5.3-rc5 `__, +`v5.3 `__ + New features, hilights: - chunks that have been trimmed and unchanged since last mount are tracked and skipped on repeated trims @@ -377,11 +522,18 @@ Other: - tree checker to verify lengths of various items - delayed iput happens at unlink time, not in cleaner thread - new tracepoints for space updates -- see [https://git.kernel.org/linus/a18f8775419d3df282dd83efdb51c5a64d092f31 pull request] 5.4 (Nov 2019) ^^^^^^^^^^^^^^ +Pull requests: +`v5.4-rc1 `__, +`v5.4-rc1 `__, +`v5.4-rc3 `__, +`v5.4-rc5 `__, +`v5.4-rc7 `__, +`v5.4-rc8 `__ + - tree checker: adde sanity checks for tree items, extent items, and references - deprecated subvolume creation mode BTRFS_SUBVOL_CREATE_ASYNC - qgroup relation deletion tries harder, orphan entries are removed too @@ -392,6 +544,15 @@ Other: 5.5 (Jan 2020) ^^^^^^^^^^^^^^ +Pull requests: +`v5.5-rc1 `__, +`v5.5-rc1 `__, +`v5.5-rc2 `__, +`v5.5-rc3 `__, +`v5.5-rc5 `__, +`v5.5-rc7 `__, +`v5.5 `__ + - new block group profiles: RAID1 with 3- and 4- copies - RAID1 in btrfs has always 2 copies, now add support for 3 and 4 @@ -413,11 +574,20 @@ Other: - error message improvements: device scan prints process name and PID - new tree-checker sanity tests (INODE_ITEM, DIR_ITEM, DIR_INDEX, INODE_REF, XATTR) -- more in the [https://git.kernel.org/linus/97d0bf96a0d0986f466c3ff59f2ace801e33dc69 pull request] 5.6 (Mar 2020) ^^^^^^^^^^^^^^ +Pull requests: +`v5.6-rc1 `__, +`v5.6-rc1 `__, +`v5.6-rc1 `__, +`v5.6-rc2 `__, +`v5.6-rc3 `__, +`v5.6-rc3 `__, +`v5.6-rc5 `__, +`v5.6-rc7 `__ + Highlights: - async discard @@ -455,11 +625,17 @@ Fixes: - writeback: range cyclic mode could miss some dirty pages and lead to OOM - two more corner cases for metadata_uuid change after power loss during the change - fix infinite loop during fsync after mix of rename operations -- see [https://git.kernel.org/linus/81a046b18b331ed6192e6fd9ff6d12a1f18058cf pull request] 5.7 (May 2020) ^^^^^^^^^^^^^^ +Pull requests: +`v5.7-rc1 `__, +`v5.7-rc2 `__, +`v5.7-rc2 `__, +`v5.7-rc4 `__, +`v5.7-rc4 `__ + Hilights: - v2 of ioctl to delete subvolumes, allowing to delete by id and more future extensions @@ -472,6 +648,14 @@ Hilights: 5.8 (Aug 2020) ^^^^^^^^^^^^^^ +Pull requests: +`v5.8-rc1 `__, +`v5.8-rc1 `__, +`v5.8-rc3 `__, +`v5.8-rc5 `__, +`v5.8-rc5 `__, +`v5.8-rc7 `__ + Hilights: - speedup dead root detection during orphan cleanup @@ -482,11 +666,21 @@ Core changes: - improved global block reserve utilization - direct io cleanups and fixes - refactored block group reading code -- lots of other core changes see the [https://git.kernel.org/linus/f3cdc8ae116e27d84e1f33c7a2995960cebb73ac pull request] 5.9 (Oct 2020) ^^^^^^^^^^^^^^ +Pull requests: +`v5.9-rc1 `__, +`v5.9-rc1 `__, +`v5.9-rc3 `__, +`v5.9-rc4 `__, +`v5.9-rc4 `__, +`v5.9-rc5 `__, +`v5.9-rc6 `__, +`v5.9-rc7 `__, +`v5.9-rc8 `__ + Hilights: - add mount option ''rescue'' to unify options for various recovery tasks on a mounted filesystems @@ -497,11 +691,16 @@ Hilights: - running balance detects Ctrl-C too - performance improvements in fsync - mount-time prefetch of chunk tree -- for other changes see the [https://git.kernel.org/linus/6dec9f406c1f2de6d750de0fc9d19872d9c4bf0d pull request] 5.10 (Dec 2020) ^^^^^^^^^^^^^^^ +Pull requests: +`v5.10-rc1 `__, +`v5.10-rc2 `__, +`v5.10-rc4 `__, +`v5.10-rc6 `__ + Hilights: - performance improvements in fsync (dbench workload: higher throughput, lower latency) @@ -515,11 +714,18 @@ Core: - cleanups, refactoring, preparatory work - error handling improvements - fixes -- for other changes see the [https://git.kernel.org/linus/11e3235b4399f7e626caa791a68a0ea8337f6683 pull request] 5.11 (Feb 2021) ^^^^^^^^^^^^^^^ +Pull requests: +`v5.11-rc1 `__, +`v5.11-rc3 `__, +`v5.11-rc4 `__, +`v5.11-rc5 `__, +`v5.11-rc6 `__, +`v5.11 `__ + - new mount option ''rescue'', various modes how to access a damaged filesystem - sysfs updates: filesystem generation, supported ''rescue'' modes, read mirror policy - removed feature: ''mount -o inode_cache'' @@ -532,11 +738,20 @@ Core: - zoned allocation mode preparation - subpage blocksize preparation - various performance improvements (skipping unnecessary work) -- for other changes see the [https://git.kernel.org/linus/f1ee3b8829006b3fda999f00f0059aa327e3f3d0 pull request] 5.12 (Apr 2021) ^^^^^^^^^^^^^^^ +Pull requests: +`v5.12-rc1 `__, +`v5.12-rc1 `__, +`v5.12-rc2 `__, +`v5.12-rc2 `__, +`v5.12-rc2 `__, +`v5.12-rc4 `__, +`v5.12-rc5 `__, +`v5.12-rc7 `__ + Features: - zoned mode (SMR/ZBC/ZNS friendly allocation mode), first working version with limitations @@ -554,11 +769,20 @@ Core changes: Fixes: - swapfile fixes (vs scrub, activation vs snapshot creation) -- for other changes see the [https://git.kernel.org/linus/6f3952cbe00b74739f540981d1afe84cd4dac879 pull request] 5.13 (Jun 2021) ^^^^^^^^^^^^^^^ +Pull requests: +`v5.13-rc1 `__, +`v5.13-rc2 `__, +`v5.13-rc2 `__, +`v5.13-rc3 `__, +`v5.13-rc3 `__, +`v5.13-rc5 `__, +`v5.13-rc6 `__, +`v5.13-rc7 `__ + User visible improvements - readahead for send, improving run time of full send by 10% and for incremental by 25% @@ -594,11 +818,18 @@ Core changes - subpage support update: metadata changes now support read and write - error handling through out relocation call paths - many other cleanups and code simplifications -- for other changes see the [https://git.kernel.org/linus/55ba0fe059a577fa08f23223991b24564962620f pull request] 5.14 (Aug 2021) ^^^^^^^^^^^^^^^ +Pull requests: +`v5.14-rc1 `__, +`v5.14-rc2 `__, +`v5.14-rc3 `__, +`v5.14-rc4 `__, +`v5.14-rc7 `__, +`v5.14 `__ + Hilights: - new sysfs knob to limit scrub IO bandwidth per device @@ -612,11 +843,17 @@ Hilights: - performance improvements (xattrs, truncate) - space handling improvements, preemptive flushing - more subpage support preparation -- for other changes see the [https://git.kernel.org/linus/122fa8c588316aacafe7e5a393bb3e875eaf5b25 pull request] 5.15 (Nov 2021) ^^^^^^^^^^^^^^^ +Pull requests: +`v5.15-rc1 `__, +`v5.15-rc1 `__, +`v5.15-rc3 `__, +`v5.15-rc6 `__, +`v5.15 `__ + Features: - fs-verity support, using standard ioctls, backward compatible with read-only @@ -657,11 +894,18 @@ Core: - new tree items for fs-verity: descriptor item, Merkle tree item - inode operations extended to be namespace-aware - cleanups and refactoring -- for other changes see the [https://git.kernel.org/linus/87045e6546078dae215d1bd3b2bc82b3ada3ca77 pull request] 5.16 (Jan 2022) ^^^^^^^^^^^^^^^ +Pull requests: +`v5.16-rc1 `__, +`v5.16-rc1 `__, +`v5.16-rc2 `__, +`v5.16-rc3 `__, +`v5.16-rc5 `__, +`v5.16-rc6 `__ + Related projects: kernel port of zstd 1.4.10 also [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c8c109546a19613d323a319d0c921cb1f317e629 released] in 5.16 @@ -691,11 +935,18 @@ Core: - preparatory work for send protocol updates - error handling improvements - cleanups and refactoring -- for other changes see the [https://git.kernel.org/linus/037c50bfbeb33b4c74e120eef5b8b99d8f025418 pull request] 5.17 (Mar 2022) ^^^^^^^^^^^^^^^ +Pull requests: +`v5.17-rc1 `__, +`v5.17-rc2 `__, +`v5.17-rc3 `__, +`v5.17-rc5 `__, +`v5.17-rc6 `__, +`v5.17-rc7 `__ + Features: - make send work with concurrent block group relocation @@ -730,6 +981,14 @@ Core: 5.18 (May 2022) ^^^^^^^^^^^^^^^ +Pull requests: +`v5.18-rc1 `__, +`v5.18-rc2 `__, +`v5.18-rc3 `__, +`v5.18-rc5 `__, +`v5.18-rc6 `__, +`v5.18-rc6 `__ + - encoded read/write ioctls, allows user space to read or write raw data directly to extents (now compressed, encrypted in the future), will be used by send/receive v2 where it saves processing time @@ -777,6 +1036,13 @@ Core, fixes: 5.19 (Jul 2022) ^^^^^^^^^^^^^^^ +Pull requests: +`v5.19-rc1 `__, +`v5.19-rc4 `__, +`v5.19-rc4 `__, +`v5.19-rc7 `__, +`v5.19-rc7 `__ + Features: - subpage: