Previously the target calculations were trivial, now it might be ripe for an extraction to unburden FindFilesToPrune (making this sub-feature unit-testable as well):
uint64_t BlockManager::CalculateTarget(const ChainstateRole role, ChainstateManager& chainman) const
{
uint64_t target{GetPruneTarget()};
uint64_t target_boost{0};
if (m_opts.prune_target_during_init > -1 && chainman.IsInitialBlockDownload()) {
if (uint64_t(m_opts.prune_target_during_init) <= target) {
target = m_opts.prune_target_during_init;
} else if (role != ChainstateRole::ASSUMEDVALID) {
// Only the background/normal gets the benefit
// NOTE: This assumes only one such chainstate exists
target_boost = m_opts.prune_target_during_init - target;
}
}
// Distribute our -prune budget over all chainstates.
const auto number_of_chainstates{chainman.GetAll().size()};
target = (target / number_of_chainstates) + target_boost;
return std::max(MIN_DISK_SPACE_FOR_BLOCK_FILES, target);
}
with
const uint64_t target{CalculateTarget(chain.GetRole(), chainman)};