xfs: improve online repair reap calculations [6.18 v2 1/2]

A few months ago, the multi-fsblock untorn writes patchset added a bunch
 of log intent item helper functions to estimate the number of intent
 items that could be added to a particular transaction.  Those helpers
 enabled us to compute a safe upper bound on the number of blocks that
 could be written in an untorn fashion with filesystem-provided out of
 place writes.
 
 Currently, the online fsck code employs static limits on the number of
 intent items that it's willing to accrue to a single transaction when
 it's trying to reap what it thinks are the old blocks from a corrupt
 structure.  There have been no problems reported with this approach
 after years of testing, but static limits are scary and gross because
 overestimating the intent item limit could result in transaction
 overflows and dead filesystems; and underestimating causes unnecessary
 overhead.
 
 This series uses the new log intent item size helpers to estimate the
 limits dynamically based on worst-case per-block repair work vs. the
 size of the scrub transaction.  After several months of testing this,
 there don't seem to be any problems here either.
 
 v2: rearrange patches, add review tags
 
 This has been running on the djcloud for months with no problems.  Enjoy!
 
 Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQ2qTKExjcn+O1o2YRKO3ySh0YRpgUCaLsHjgAKCRBKO3ySh0YR
 pvmYAP9kqz/fFRwmU8Stc384u/MA1OewBpohIjjcoGL8W36VLQD8DofFiY/K7yfB
 w4KUsJWk//uHFU31iRRKKp8+FCjKtgU=
 =03sf
 -----END PGP SIGNATURE-----

Merge tag 'fix-scrub-reap-calculations_2025-09-05' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.18-merge

xfs: improve online repair reap calculations [6.18 v2 1/2]

A few months ago, the multi-fsblock untorn writes patchset added a bunch
of log intent item helper functions to estimate the number of intent
items that could be added to a particular transaction.  Those helpers
enabled us to compute a safe upper bound on the number of blocks that
could be written in an untorn fashion with filesystem-provided out of
place writes.

Currently, the online fsck code employs static limits on the number of
intent items that it's willing to accrue to a single transaction when
it's trying to reap what it thinks are the old blocks from a corrupt
structure.  There have been no problems reported with this approach
after years of testing, but static limits are scary and gross because
overestimating the intent item limit could result in transaction
overflows and dead filesystems; and underestimating causes unnecessary
overhead.

This series uses the new log intent item size helpers to estimate the
limits dynamically based on worst-case per-block repair work vs. the
size of the scrub transaction.  After several months of testing this,
there don't seem to be any problems here either.

v2: rearrange patches, add review tags

This has been running on the djcloud for months with no problems.  Enjoy!

Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
Carlos Maiolino 2025-09-05 20:26:42 +02:00
commit 482c57805c
838 changed files with 9505 additions and 4962 deletions

Some files were not shown because too many files have changed in this diff Show more