From: Zygo Blaxell Date: Fri, 18 Sep 2026 21:20:29 +0000 (-0400) Subject: covers: stripe-alloc is 73 patches now, and the cover describes 39 X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b91b06cdef7ffa324b0da49eea9ef0ace3471736;p=linux covers: stripe-alloc is 73 patches now, and the cover describes 39 The misc-next port landed 34 more patches on topics/stripe-alloc, taking the series from 39 to 73. The subject line said 0/39. Every patch number cited in the body still resolves: the original 39 are an exact prefix of the current series, so patches 13-15, 18-20, 38, 39 and the rest all still point where they did. Checked rather than assumed. What is NOT fixed is that 34 patches are now undescribed. Rather than leave the cover quietly claiming 73 and explaining 39, it carries a marked section saying so, listing them by final position, and sketching a grouping for the prose. It says DO NOT SEND until that section is replaced, because a cover that undercounts its own series is worse than one that is obviously unfinished. Assisted-by: Claude:claude-opus-5[1m] --- diff --git a/covers/stripe-alloc.txt b/covers/stripe-alloc.txt index 0793c1a7af695..103b6bf371f5e 100644 --- a/covers/stripe-alloc.txt +++ b/covers/stripe-alloc.txt @@ -1,4 +1,4 @@ -Subject: [RFC PATCH 0/39] btrfs: close the raid56 write hole for datacow with stripe-exclusive allocation +Subject: [RFC PATCH 0/73] btrfs: close the raid56 write hole for datacow with stripe-exclusive allocation This series closes the raid56 write hole for datacow data by changing the allocator, with no on-disk format change and no journal. The same rule, @@ -1448,3 +1448,56 @@ costs, accepted for this RFC. fs/btrfs/... | 39 patches, 34 files changed, 6338 insertions(+), 49 deletions(-) harness, logs and the test catalog available on request. + + +=== NOT YET WRITTEN: patches 40-73 === + +DO NOT SEND until this section is replaced with prose. The series is 73 +patches and the description above covers 39 of them; every patch number cited +above still resolves, because the original 39 are an exact prefix of the +current series, but the remaining 34 are undescribed. + +They are the ENOSPC/relocation/reclaim chain v2, the review-round-1 fixes, and +the stripe_meta reserve work, landed on 6.18 between 2026-08-27 and 2026-09-18 +and ported here on 2026-09-18: + +40. stripe_alloc: do not count trapped free space twice when making a block group read-only +41. stripe_alloc: keep the admitted bytes placeable when a group goes read-only +42. stripe_alloc: never let relocation wait on the whole-stripe gate +43. stripe_alloc: give a queued stripe group a chunk to relocate into when the supply is short +44. stripe_alloc: charge relocation a margin per reservation, not per extent +45. stripe_alloc: keep the relocation group's stripes out of the admission supply +46. stripe_alloc: let a data write fall back to the relocation group rather than drop +47. stripe_alloc: hand groups full of trapped free space to the reclaim worker +48. stripe_alloc: relocate a queued stripe group even while it has reserved or pinned bytes +49. stripe_meta: maintain trapped free space for metadata groups like data +50. stripe_meta: back the global reserve with usable stripes, and say when a tree block finds none +51. stripe_meta: hold back whole stripes so tree blocks always land and trapped groups can be reclaimed +52. stripe_meta: do not steal from the global reserve below the relocation reserve +53. stripe_meta: let the transaction machinery's own reservations draw on the reserve +54. stripe_meta: let a group go read-only for relocation against the reserve +55. stripe_alloc: show per-group trapped bytes in the space info dump +56. stripe_alloc: tell a dead tree block from a live one in the metadata RMW audit +57. stripe_alloc: do not read an inline backref off a keyed-ref extent item +58. stripe_alloc: count whole stripes stranded behind live runs as trapped +59. stripe_alloc: give nocow extents a private run only while they may be written in place +60. stripe_alloc: count nocow run lifecycles and stranded stripes in sysfs +61. stripe_alloc: charge the held stripe margin against every admission +62. stripe_alloc: admit data reservations by whole stripes +63. stripe_alloc: hold a stripe of margin across a preallocation +64. stripe_alloc: hold the probe margin until the metadata reservation charges it +65. stripe_alloc: saturate the read-only guard's claimable subtraction +66. stripe_meta: carry raid56 metadata groups through a runtime enable or disable +67. stripe_alloc: charge the preallocation's stripe hold under the reservation lock +68. stripe_alloc: return a group's allocation cluster before scanning its stripes +69. stripe_meta: sync the open-run remainder when the commit retires metadata runs +70. raid56: do not call a covered stripe_meta group uncovered +71. stripe_alloc: release open stripe runs when a mount fails or an aborted filesystem unmounts +72. stripe_alloc: say at mount whether the policy is on +73. stripe_alloc: hold a reference on the rbio being parked + +Grouping for the eventual prose, roughly: 40-49 reclaim and relocation against +the whole-stripe gate; 50-58 the reservation margin and trapped-space +accounting; 59-70 stripe_meta (whole stripes held back so tree blocks always +land, and trapped metadata groups can be reclaimed); 71-73 lifecycle and +diagnostics.