all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: "Fabian Grünbichler" <f.gruenbichler@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [pbs-devel] [PATCH proxmox-backup 2/4] gc: log index files found outside of expected scheme
Date: Mon, 30 Nov 2020 16:22:18 +0100	[thread overview]
Message-ID: <20201130152220.658777-3-f.gruenbichler@proxmox.com> (raw)
In-Reply-To: <20201130152220.658777-1-f.gruenbichler@proxmox.com>

for safety reason, GC finds and marks all index files below the
datastore base path. as a result of regular operations, only index files
within the expected scheme of <TYPE>/<ID>/<TIMESTAMP> should exist.

add a small check + warning if the index list contains index files out
side of this expected scheme, so that an admin with shell access can
investigate.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---

Notes:
    we could log the full path to syslog/journal as well

 src/backup/datastore.rs | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/src/backup/datastore.rs b/src/backup/datastore.rs
index b199f11f..2700d6e9 100644
--- a/src/backup/datastore.rs
+++ b/src/backup/datastore.rs
@@ -3,6 +3,7 @@ use std::io::{self, Write};
 use std::path::{Path, PathBuf};
 use std::sync::{Arc, Mutex};
 use std::convert::TryFrom;
+use std::str::FromStr;
 use std::time::Duration;
 use std::fs::File;
 
@@ -474,12 +475,24 @@ impl DataStore {
         let mut done = 0;
         let mut last_percentage: usize = 0;
 
+        let mut strange_paths_count: u64 = 0;
+
         for img in image_list {
 
             worker.check_abort()?;
             tools::fail_on_shutdown()?;
 
+            if let Some(backup_dir_path) = img.parent() {
+                let backup_dir_path = backup_dir_path.strip_prefix(self.base_path())?;
+                if let Some(backup_dir_str) = backup_dir_path.to_str() {
+                    if BackupDir::from_str(backup_dir_str).is_err() {
+                        strange_paths_count += 1;
+                    }
+                }
+            }
+
             let path = self.chunk_store.relative_path(&img);
+
             match std::fs::File::open(&path) {
                 Ok(file) => {
                     if let Ok(archive_type) = archive_type(&img) {
@@ -514,6 +527,15 @@ impl DataStore {
             }
         }
 
+        if strange_paths_count > 0 {
+            crate::task_log!(
+                worker,
+                "found (and marked) {} index files outside of expected directory scheme",
+                strange_paths_count,
+            );
+        }
+
+
         Ok(())
     }
 
-- 
2.20.1





  parent reply	other threads:[~2020-11-30 15:23 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-30 15:22 [pbs-devel] [PATCH proxmox-backup 0/4] GC cleanups Fabian Grünbichler
2020-11-30 15:22 ` [pbs-devel] [PATCH proxmox-backup 1/4] gc: shorten progress messages Fabian Grünbichler
2020-11-30 15:22 ` Fabian Grünbichler [this message]
2020-11-30 15:22 ` [pbs-devel] [PATCH proxmox-backup 3/4] gc: remove duplicate variable Fabian Grünbichler
2020-11-30 15:22 ` [pbs-devel] [RFC proxmox-backup 4/4] gc: don't limit index listing to same filesystem Fabian Grünbichler
2020-12-01  5:24 ` [pbs-devel] applied: [PATCH proxmox-backup 0/4] GC cleanups Dietmar Maurer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201130152220.658777-3-f.gruenbichler@proxmox.com \
    --to=f.gruenbichler@proxmox.com \
    --cc=pbs-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal