From d62e6e22641e6e39ea9fa027c9795ab33c77ce64 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Fri, 21 Dec 2018 08:36:57 +0100 Subject: [PATCH] backup-client: use 1M chunks, make chunk_size configurable --- src/backup/datastore.rs | 4 ++-- src/backup/image_index.rs | 4 +--- src/bin/backup-client.rs | 6 ++++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/backup/datastore.rs b/src/backup/datastore.rs index a846f3e4..de903562 100644 --- a/src/backup/datastore.rs +++ b/src/backup/datastore.rs @@ -27,9 +27,9 @@ impl DataStore { }) } - pub fn create_image_writer>(&mut self, filename: P, size: usize) -> Result { + pub fn create_image_writer>(&mut self, filename: P, size: usize, chunk_size: usize) -> Result { - let index = ImageIndexWriter::create(&mut self.chunk_store, filename.as_ref(), size)?; + let index = ImageIndexWriter::create(&mut self.chunk_store, filename.as_ref(), size, chunk_size)?; Ok(index) } diff --git a/src/backup/image_index.rs b/src/backup/image_index.rs index cfc056ac..25170dc5 100644 --- a/src/backup/image_index.rs +++ b/src/backup/image_index.rs @@ -150,7 +150,7 @@ impl <'a> Drop for ImageIndexWriter<'a> { impl <'a> ImageIndexWriter<'a> { - pub fn create(store: &'a mut ChunkStore, path: &Path, size: usize) -> Result { + pub fn create(store: &'a mut ChunkStore, path: &Path, size: usize, chunk_size: usize) -> Result { let full_path = store.relative_path(path); let mut tmp_path = full_path.clone(); @@ -162,8 +162,6 @@ impl <'a> ImageIndexWriter<'a> { .write(true) .open(&tmp_path)?; - let chunk_size = 64*1024; // fixed size for now?? - let header_size = std::mem::size_of::(); // todo: use static assertion when available in rust diff --git a/src/bin/backup-client.rs b/src/bin/backup-client.rs index 65b66e72..c3604dac 100644 --- a/src/bin/backup-client.rs +++ b/src/bin/backup-client.rs @@ -43,9 +43,11 @@ fn backup_file(param: Value, _info: &ApiMethod) -> Result { if stat.st_size <= 0 { bail!("got strange file size '{}'", stat.st_size); } let size = stat.st_size as usize; - let mut index = datastore.create_image_writer(&target, size)?; + let chunk_size = 1024*1024; - tools::file_chunker(file, 64*1024, |pos, chunk| { + let mut index = datastore.create_image_writer(&target, size, chunk_size)?; + + tools::file_chunker(file, chunk_size, |pos, chunk| { index.add_chunk(pos, chunk)?; Ok(true) })?;