backup-client: use 1M chunks, make chunk_size configurable

This commit is contained in:
Dietmar Maurer 2018-12-21 08:36:57 +01:00
parent c34eb16651
commit d62e6e2264
3 changed files with 7 additions and 7 deletions

View File

@ -27,9 +27,9 @@ impl DataStore {
}) })
} }
pub fn create_image_writer<P: AsRef<Path>>(&mut self, filename: P, size: usize) -> Result<ImageIndexWriter, Error> { pub fn create_image_writer<P: AsRef<Path>>(&mut self, filename: P, size: usize, chunk_size: usize) -> Result<ImageIndexWriter, Error> {
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) Ok(index)
} }

View File

@ -150,7 +150,7 @@ impl <'a> Drop for ImageIndexWriter<'a> {
impl <'a> ImageIndexWriter<'a> { impl <'a> ImageIndexWriter<'a> {
pub fn create(store: &'a mut ChunkStore, path: &Path, size: usize) -> Result<Self, Error> { pub fn create(store: &'a mut ChunkStore, path: &Path, size: usize, chunk_size: usize) -> Result<Self, Error> {
let full_path = store.relative_path(path); let full_path = store.relative_path(path);
let mut tmp_path = full_path.clone(); let mut tmp_path = full_path.clone();
@ -162,8 +162,6 @@ impl <'a> ImageIndexWriter<'a> {
.write(true) .write(true)
.open(&tmp_path)?; .open(&tmp_path)?;
let chunk_size = 64*1024; // fixed size for now??
let header_size = std::mem::size_of::<ImageIndexHeader>(); let header_size = std::mem::size_of::<ImageIndexHeader>();
// todo: use static assertion when available in rust // todo: use static assertion when available in rust

View File

@ -43,9 +43,11 @@ fn backup_file(param: Value, _info: &ApiMethod) -> Result<Value, Error> {
if stat.st_size <= 0 { bail!("got strange file size '{}'", stat.st_size); } if stat.st_size <= 0 { bail!("got strange file size '{}'", stat.st_size); }
let size = stat.st_size as usize; 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)?; index.add_chunk(pos, chunk)?;
Ok(true) Ok(true)
})?; })?;