Merge pull request #183 from rustic-rs/prune-repack-max

prune: fix max-repack option
This commit is contained in:
aawsome 2022-09-05 21:13:17 +02:00 committed by GitHub
commit b60fe68ed7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -611,14 +611,13 @@ impl Pruner {
self.repack_candidates.sort_unstable_by_key(|rc| rc.0);
let mut resize_packs: BlobTypeMap<Vec<_>> = Default::default();
let mut do_repack: BlobTypeMap<bool> = Default::default();
let mut repack_size = 0;
for (pi, repack_reason, index_num, pack_num) in std::mem::take(&mut self.repack_candidates)
{
let pack = &mut self.index_files[index_num].packs[pack_num];
let repack_size_new =
self.stats.total_size().repack + (pi.unused_size + pi.used_size) as u64;
if repack_size_new >= max_repack
if repack_size + pi.used_size as u64 >= max_repack
|| (self.stats.total_size().unused_after_prune() < max_unused
&& repack_reason == PartlyUsed
&& pi.blob_type == BlobType::Data)
@ -626,8 +625,10 @@ impl Pruner {
pack.set_todo(PackToDo::Keep, &pi, &mut self.stats);
} else if repack_reason == SizeMismatch {
resize_packs[pack.blob_type].push((pi, index_num, pack_num));
repack_size += pi.used_size as u64;
} else {
pack.set_todo(PackToDo::Repack, &pi, &mut self.stats);
repack_size += pi.used_size as u64;
do_repack[pack.blob_type] = true;
}
}