From fe3e65c3ea7fe86d6a68dc6a460a3e540e381507 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Fri, 26 Jun 2020 08:22:46 +0200 Subject: [PATCH] src/api2/backup.rs: call register_chunk in previous download api --- src/api2/backup.rs | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/api2/backup.rs b/src/api2/backup.rs index 45dbdec4..05978bf2 100644 --- a/src/api2/backup.rs +++ b/src/api2/backup.rs @@ -640,11 +640,33 @@ fn download_previous( None => bail!("no previous backup"), }; - env.log(format!("download '{}' from previous backup.", archive_name)); - let mut path = env.datastore.snapshot_path(&last_backup.backup_dir); path.push(&archive_name); + { + let index: Option> = match archive_type(&archive_name)? { + ArchiveType::FixedIndex => { + let index = env.datastore.open_fixed_reader(&path)?; + Some(Box::new(index)) + } + ArchiveType::DynamicIndex => { + let index = env.datastore.open_dynamic_reader(&path)?; + Some(Box::new(index)) + } + _ => { None } + }; + if let Some(index) = index { + env.log(format!("register chunks in '{}' from previous backup.", archive_name)); + + for pos in 0..index.index_count() { + let info = index.chunk_info(pos).unwrap(); + let size = info.range.end - info.range.start; + env.register_chunk(info.digest, size as u32)?; + } + } + } + + env.log(format!("download '{}' from previous backup.", archive_name)); crate::api2::helpers::create_download_response(path).await }.boxed() }