From 2e079b8bf26491df44de7e49be7098368b86d98e Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Mon, 29 Jun 2020 12:44:45 +0200 Subject: [PATCH] partially revert commit 1f82f9b7b5d231da22a541432d5617cb303c0000 do it backwards compatible. Also, code was wrong because FixedIndexWriter still computed old style csums... --- src/backup/dynamic_index.rs | 13 +++++++++++++ src/backup/fixed_index.rs | 13 +++++++++++++ src/backup/index.rs | 14 +------------- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/backup/dynamic_index.rs b/src/backup/dynamic_index.rs index 8b9694f4..4907fe1f 100644 --- a/src/backup/dynamic_index.rs +++ b/src/backup/dynamic_index.rs @@ -189,6 +189,19 @@ impl IndexFile for DynamicIndexReader { } } + fn compute_csum(&self) -> ([u8; 32], u64) { + let mut csum = openssl::sha::Sha256::new(); + let mut chunk_end = 0; + for pos in 0..self.index_count() { + let info = self.chunk_info(pos).unwrap(); + chunk_end = info.range.end; + csum.update(&chunk_end.to_le_bytes()); + csum.update(&info.digest); + } + let csum = csum.finish(); + (csum, chunk_end) + } + #[allow(clippy::cast_ptr_alignment)] fn chunk_info(&self, pos: usize) -> Option { if pos >= self.index.len() { diff --git a/src/backup/fixed_index.rs b/src/backup/fixed_index.rs index c92bdff9..73d0dad0 100644 --- a/src/backup/fixed_index.rs +++ b/src/backup/fixed_index.rs @@ -206,6 +206,19 @@ impl IndexFile for FixedIndexReader { digest: *digest, }) } + + fn compute_csum(&self) -> ([u8; 32], u64) { + let mut csum = openssl::sha::Sha256::new(); + let mut chunk_end = 0; + for pos in 0..self.index_count() { + let info = self.chunk_info(pos).unwrap(); + chunk_end = info.range.end; + csum.update(&info.digest); + } + let csum = csum.finish(); + + (csum, chunk_end) + } } pub struct FixedIndexWriter { diff --git a/src/backup/index.rs b/src/backup/index.rs index d61a477c..efdf3b54 100644 --- a/src/backup/index.rs +++ b/src/backup/index.rs @@ -23,19 +23,7 @@ pub trait IndexFile { fn chunk_info(&self, pos: usize) -> Option; /// Compute index checksum and size - fn compute_csum(&self) -> ([u8; 32], u64) { - let mut csum = openssl::sha::Sha256::new(); - let mut chunk_end = 0; - for pos in 0..self.index_count() { - let info = self.chunk_info(pos).unwrap(); - chunk_end = info.range.end; - csum.update(&chunk_end.to_le_bytes()); - csum.update(&info.digest); - } - let csum = csum.finish(); - - (csum, chunk_end) - } + fn compute_csum(&self) -> ([u8; 32], u64); /// Returns most often used chunks fn find_most_used_chunks(&self, max: usize) -> HashMap<[u8; 32], usize> { -- 2.39.2