backup-client: use 1M chunks, make chunk_size configurable
This commit is contained in:
parent
c34eb16651
commit
d62e6e2264
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
})?;
|
})?;
|
||||||
|
|
Loading…
Reference in New Issue