diff --git a/Cargo.lock b/Cargo.lock
index 21eea2e..f8e285c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -185,16 +185,6 @@ dependencies = [
"tiny-keccak",
]
-[[package]]
-name = "crossbeam-channel"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87"
-dependencies = [
- "crossbeam-utils 0.7.2",
- "maybe-uninit",
-]
-
[[package]]
name = "crossbeam-channel"
version = "0.5.1"
@@ -202,7 +192,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4"
dependencies = [
"cfg-if 1.0.0",
- "crossbeam-utils 0.8.5",
+ "crossbeam-utils",
]
[[package]]
@@ -213,7 +203,7 @@ checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9"
dependencies = [
"cfg-if 1.0.0",
"crossbeam-epoch",
- "crossbeam-utils 0.8.5",
+ "crossbeam-utils",
]
[[package]]
@@ -223,23 +213,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd"
dependencies = [
"cfg-if 1.0.0",
- "crossbeam-utils 0.8.5",
+ "crossbeam-utils",
"lazy_static",
"memoffset",
"scopeguard",
]
-[[package]]
-name = "crossbeam-utils"
-version = "0.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
-dependencies = [
- "autocfg",
- "cfg-if 0.1.10",
- "lazy_static",
-]
-
[[package]]
name = "crossbeam-utils"
version = "0.8.5"
@@ -275,7 +254,7 @@ dependencies = [
"byteorder",
"chrono",
"clap",
- "crossbeam-channel 0.4.4",
+ "crossbeam-channel",
"env_logger",
"glob",
"hostname",
@@ -292,6 +271,17 @@ dependencies = [
"zstd",
]
+[[package]]
+name = "derivative"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
[[package]]
name = "dirs-next"
version = "2.0.0"
@@ -565,12 +555,6 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
-[[package]]
-name = "maybe-uninit"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
-
[[package]]
name = "memchr"
version = "2.4.0"
@@ -792,9 +776,9 @@ version = "1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e"
dependencies = [
- "crossbeam-channel 0.5.1",
+ "crossbeam-channel",
"crossbeam-deque",
- "crossbeam-utils 0.8.5",
+ "crossbeam-utils",
"lazy_static",
"num_cpus",
]
@@ -1205,8 +1189,9 @@ dependencies = [
"byteorder",
"chrono",
"clap",
- "crossbeam-channel 0.4.4",
- "crossbeam-utils 0.8.5",
+ "crossbeam-channel",
+ "crossbeam-utils",
+ "derivative",
"env_logger",
"fastcdc",
"glob",
diff --git a/datman/Cargo.toml b/datman/Cargo.toml
index a0e176d..f1c0a50 100644
--- a/datman/Cargo.toml
+++ b/datman/Cargo.toml
@@ -12,7 +12,7 @@ description = "A chunked and deduplicated backup system using Yama"
[dependencies]
clap = "= 3.0.0-beta.5"
-crossbeam-channel = "0.4"
+crossbeam-channel = "0.5.1"
anyhow = "1.0"
thiserror = "1.0"
serde = { version = "1.0.104", features = ["derive"] }
diff --git a/yama/Cargo.toml b/yama/Cargo.toml
index cabc19f..359ff68 100644
--- a/yama/Cargo.toml
+++ b/yama/Cargo.toml
@@ -20,8 +20,8 @@ twox-hash = "1.5.0"
serde = { version = "1.0.104", features = ["derive"] }
serde_bare = "0.3.0"
users = "0.9.1"
-crossbeam-channel = "0.4"
-crossbeam-utils = "0.8.1"
+crossbeam-channel = "0.5.1"
+crossbeam-utils = "0.8.5"
toml = "0.5.5"
glob = "0.3.0"
nix = "0.17.0"
@@ -38,6 +38,7 @@ rayon = "1.5.0"
rusqlite = "0.24.2"
chrono = "0.4.19"
rustyline = "7.1.0"
+derivative = "2.2.0"
[dev-dependencies]
diff --git a/yama/src/operations/checking.rs b/yama/src/operations/checking.rs
index a09eb7e..4532792 100644
--- a/yama/src/operations/checking.rs
+++ b/yama/src/operations/checking.rs
@@ -18,8 +18,9 @@ along with Yama. If not, see .
use crate::chunking::RecursiveUnchunker;
use crate::commands::retrieve_tree_node;
use crate::definitions::{ChunkId, TreeNode};
-use crate::pile::{Keyspace, Pile, RawPile};
+use crate::pile::{ControllerMessage, Keyspace, Pile, RawPile, StoragePipelineSettings};
use anyhow::bail;
+use crossbeam_channel::Sender;
use indicatif::{ProgressBar, ProgressDrawTarget, ProgressStyle};
use log::{error, info, warn};
use std::collections::HashSet;
@@ -121,6 +122,15 @@ impl RawPile for VacuumRawPile