[thin_shrink] add --no-copy
This commit is contained in:
parent
abf06236b1
commit
07da5704d5
@ -33,6 +33,14 @@ fn main() {
|
||||
.value_name("DATA")
|
||||
.takes_value(true),
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("NOCOPY")
|
||||
.help("Skip the copying of data, useful for benchmarking")
|
||||
.required(false)
|
||||
.long("no-copy")
|
||||
.value_name("NOCOPY")
|
||||
.takes_value(false),
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("SIZE")
|
||||
.help("Specify new size for the pool (in data blocks)")
|
||||
@ -49,13 +57,14 @@ fn main() {
|
||||
let output_file = matches.value_of("OUTPUT").unwrap();
|
||||
let size = matches.value_of("SIZE").unwrap().parse::<u64>().unwrap();
|
||||
let data_file = matches.value_of("DATA").unwrap();
|
||||
let do_copy = !matches.is_present("NOCOPY");
|
||||
|
||||
if !file_utils::file_exists(input_file) {
|
||||
eprintln!("Couldn't find input file '{}'.", &input_file);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if let Err(reason) = thinp::shrink::toplevel::shrink(&input_file, &output_file, &data_file, size) {
|
||||
if let Err(reason) = thinp::shrink::toplevel::shrink(&input_file, &output_file, &data_file, size, do_copy) {
|
||||
println!("Application error: {}\n", reason);
|
||||
exit(1);
|
||||
}
|
||||
|
@ -433,7 +433,7 @@ fn process_xml<MV: xml::MetadataVisitor>(input_path: &str, pass: &mut MV) -> Res
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn shrink(input_path: &str, output_path: &str, data_path: &str, nr_blocks: u64) -> Result<()> {
|
||||
pub fn shrink(input_path: &str, output_path: &str, data_path: &str, nr_blocks: u64, do_copy: bool) -> Result<()> {
|
||||
let mut pass1 = Pass1::new(nr_blocks);
|
||||
eprint!("Reading xml...");
|
||||
process_xml(input_path, &mut pass1)?;
|
||||
@ -454,8 +454,12 @@ pub fn shrink(input_path: &str, output_path: &str, data_path: &str, nr_blocks: u
|
||||
|
||||
let remaps = build_remaps(above, free);
|
||||
|
||||
if do_copy {
|
||||
let regions = build_copy_regions(&remaps, pass1.block_size.unwrap() as u64);
|
||||
copier::copy(data_path, ®ions)?;
|
||||
} else {
|
||||
eprintln!("skipping copy");
|
||||
}
|
||||
|
||||
let output = OpenOptions::new()
|
||||
.read(false)
|
||||
|
Loading…
Reference in New Issue
Block a user