From d08cff51a4edf3a3bf38b055be45a1752f2f5aae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= Date: Wed, 20 Jan 2021 17:23:53 +0100 Subject: [PATCH] rework GC traversal error handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit the error message don't make sense with an empty default Signed-off-by: Fabian Grünbichler Signed-off-by: Wolfgang Bumiller --- src/backup/datastore.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/backup/datastore.rs b/src/backup/datastore.rs index 34865380..fae7ff25 100644 --- a/src/backup/datastore.rs +++ b/src/backup/datastore.rs @@ -395,16 +395,18 @@ impl DataStore { } let handle_entry_err = |err: walkdir::Error| { if let Some(inner) = err.io_error() { - let path = err.path().unwrap_or(Path::new("")); - match inner.kind() { - io::ErrorKind::PermissionDenied => { + if let Some(path) = err.path() { + if inner.kind() == io::ErrorKind::PermissionDenied { // only allow to skip ext4 fsck directory, avoid GC if, for example, // a user got file permissions wrong on datastore rsync to new server if err.depth() > 1 || !path.ends_with("lost+found") { - bail!("cannot continue garbage-collection safely, permission denied on: {}", path.display()) + bail!("cannot continue garbage-collection safely, permission denied on: {:?}", path) } - }, - _ => bail!("unexpected error on datastore traversal: {} - {}", inner, path.display()), + } else { + bail!("unexpected error on datastore traversal: {} - {:?}", inner, path) + } + } else { + bail!("unexpected error on datastore traversal: {}", inner) } } Ok(())