summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Thiel <sebastian.thiel@icloud.com>2021-05-30 16:32:46 +0800
committerSebastian Thiel <sebastian.thiel@icloud.com>2021-05-30 16:32:46 +0800
commitd381c6caed1fd404d7a11c1f581abdba749b7a20 (patch)
tree77e34387f3aefc2641cacbc067fdc256383361dc
parentffdb0c270f9c07a3518e2335ee77d7788bfc7793 (diff)
Only fetch metadata for files for a speedup
-rw-r--r--src/aggregate.rs2
-rw-r--r--src/common.rs4
-rw-r--r--src/traverse.rs2
3 files changed, 5 insertions, 3 deletions
diff --git a/src/aggregate.rs b/src/aggregate.rs
index 6a31445..3d3ac2d 100644
--- a/src/aggregate.rs
+++ b/src/aggregate.rs
@@ -84,7 +84,7 @@ pub fn aggregate(
num_errors += 1;
0
}
- None => unreachable!("must have populated client state for metadata"),
+ None => 0, // ignore directory
} as u128;
stats.largest_file_in_bytes = stats.largest_file_in_bytes.max(file_size);
stats.smallest_file_in_bytes = stats.smallest_file_in_bytes.min(file_size);
diff --git a/src/common.rs b/src/common.rs
index e214f93..841e7e4 100644
--- a/src/common.rs
+++ b/src/common.rs
@@ -139,7 +139,9 @@ impl WalkOptions {
.process_read_dir(|_, _, _, dir_entry_results| {
dir_entry_results.iter_mut().for_each(|dir_entry_result| {
if let Ok(dir_entry) = dir_entry_result {
- dir_entry.client_state = Some(dir_entry.metadata());
+ if dir_entry.file_type.is_file() {
+ dir_entry.client_state = Some(dir_entry.metadata());
+ }
}
})
})
diff --git a/src/traverse.rs b/src/traverse.rs
index 282c87f..7cdaf7f 100644
--- a/src/traverse.rs
+++ b/src/traverse.rs
@@ -135,7 +135,7 @@ impl Traversal {
data.metadata_io_error = true;
0
}
- None => unreachable!("must have populated client state for metadata"),
+ None => 0, // a directory
} as u128;
match (entry.depth, previous_depth) {