all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Dominik Csapak <d.csapak@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [pbs-devel] [PATCH proxmox-backup 1/5] tape/pool_writer: give proper types to 'contains_snapshot'
Date: Tue, 17 May 2022 08:52:11 +0200	[thread overview]
Message-ID: <20220517065215.327699-1-d.csapak@proxmox.com> (raw)

instead of a string. The underlying catalog implementation has to
care about how this is formatted, not the external caller

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 src/api2/tape/backup.rs             | 12 ++++++++++--
 src/tape/media_catalog.rs           | 19 +++++++++++++++----
 src/tape/pool_writer/catalog_set.rs | 12 +++++++++---
 src/tape/pool_writer/mod.rs         |  9 +++++++--
 4 files changed, 41 insertions(+), 11 deletions(-)

diff --git a/src/api2/tape/backup.rs b/src/api2/tape/backup.rs
index c7d042fb..ba08994f 100644
--- a/src/api2/tape/backup.rs
+++ b/src/api2/tape/backup.rs
@@ -496,7 +496,11 @@ fn backup_worker(
             if let Some(info) = snapshot_list.pop() {
                 let rel_path =
                     print_ns_and_snapshot(info.backup_dir.backup_ns(), info.backup_dir.as_ref());
-                if pool_writer.contains_snapshot(datastore_name, &rel_path) {
+                if pool_writer.contains_snapshot(
+                    datastore_name,
+                    &info.backup_dir.backup_ns(),
+                    info.backup_dir.as_ref(),
+                ) {
                     task_log!(worker, "skip snapshot {}", rel_path);
                     continue;
                 }
@@ -517,7 +521,11 @@ fn backup_worker(
                 let rel_path =
                     print_ns_and_snapshot(info.backup_dir.backup_ns(), info.backup_dir.as_ref());
 
-                if pool_writer.contains_snapshot(datastore_name, &rel_path) {
+                if pool_writer.contains_snapshot(
+                    datastore_name,
+                    &info.backup_dir.backup_ns(),
+                    info.backup_dir.as_ref(),
+                ) {
                     task_log!(worker, "skip snapshot {}", rel_path);
                     continue;
                 }
diff --git a/src/tape/media_catalog.rs b/src/tape/media_catalog.rs
index 85128f80..38fdcc6e 100644
--- a/src/tape/media_catalog.rs
+++ b/src/tape/media_catalog.rs
@@ -411,10 +411,16 @@ impl MediaCatalog {
     }
 
     /// Test if the catalog already contain a snapshot
-    pub fn contains_snapshot(&self, store: &str, snapshot: &str) -> bool {
+    pub fn contains_snapshot(
+        &self,
+        store: &str,
+        ns: &BackupNamespace,
+        snapshot: &BackupDir,
+    ) -> bool {
+        let path = print_ns_and_snapshot(ns, snapshot);
         match self.content.get(store) {
             None => false,
-            Some(content) => content.snapshot_index.contains_key(snapshot),
+            Some(content) => content.snapshot_index.contains_key(&path),
         }
     }
 
@@ -960,9 +966,14 @@ impl MediaSetCatalog {
     }
 
     /// Test if the catalog already contain a snapshot
-    pub fn contains_snapshot(&self, store: &str, snapshot: &str) -> bool {
+    pub fn contains_snapshot(
+        &self,
+        store: &str,
+        ns: &BackupNamespace,
+        snapshot: &BackupDir,
+    ) -> bool {
         for catalog in self.catalog_list.values() {
-            if catalog.contains_snapshot(store, snapshot) {
+            if catalog.contains_snapshot(store, ns, snapshot) {
                 return true;
             }
         }
diff --git a/src/tape/pool_writer/catalog_set.rs b/src/tape/pool_writer/catalog_set.rs
index 1acc108a..d588df18 100644
--- a/src/tape/pool_writer/catalog_set.rs
+++ b/src/tape/pool_writer/catalog_set.rs
@@ -29,13 +29,19 @@ impl CatalogSet {
     }
 
     /// Test if the catalog already contains a snapshot
-    pub fn contains_snapshot(&self, store: &str, snapshot: &str) -> bool {
+    pub fn contains_snapshot(
+        &self,
+        store: &str,
+        ns: &pbs_api_types::BackupNamespace,
+        snapshot: &pbs_api_types::BackupDir,
+    ) -> bool {
         if let Some(ref catalog) = self.catalog {
-            if catalog.contains_snapshot(store, snapshot) {
+            if catalog.contains_snapshot(store, ns, snapshot) {
                 return true;
             }
         }
-        self.media_set_catalog.contains_snapshot(store, snapshot)
+        self.media_set_catalog
+            .contains_snapshot(store, ns, snapshot)
     }
 
     /// Test if the catalog already contains a chunk
diff --git a/src/tape/pool_writer/mod.rs b/src/tape/pool_writer/mod.rs
index d00c16e6..b2ff8620 100644
--- a/src/tape/pool_writer/mod.rs
+++ b/src/tape/pool_writer/mod.rs
@@ -100,11 +100,16 @@ impl PoolWriter {
         Ok(())
     }
 
-    pub fn contains_snapshot(&self, store: &str, snapshot: &str) -> bool {
+    pub fn contains_snapshot(
+        &self,
+        store: &str,
+        ns: &pbs_api_types::BackupNamespace,
+        snapshot: &pbs_api_types::BackupDir,
+    ) -> bool {
         self.catalog_set
             .lock()
             .unwrap()
-            .contains_snapshot(store, snapshot)
+            .contains_snapshot(store, ns, snapshot)
     }
 
     /// Eject media and drop PoolWriterState (close drive)
-- 
2.30.2





             reply	other threads:[~2022-05-17  6:52 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-17  6:52 Dominik Csapak [this message]
2022-05-17  6:52 ` [pbs-devel] [PATCH proxmox-backup 2/5] ui: form/NamespaceSelector: show proper emptyText Dominik Csapak
2022-05-17 11:41   ` [pbs-devel] applied: " Thomas Lamprecht
2022-05-17  6:52 ` [pbs-devel] [PATCH proxmox-backup 3/5] ui: form/DataStoreSelector: show maintenance mode in selector Dominik Csapak
2022-05-17  8:53   ` [pbs-devel] applied: " Thomas Lamprecht
2022-05-17  6:52 ` [pbs-devel] [PATCH proxmox-backup 4/5] ui: datastore/Summary: change storage axis to power of two Dominik Csapak
2022-05-17  8:09   ` Thomas Lamprecht
2022-05-17  8:20     ` Dominik Csapak
2022-05-17  8:32       ` Thomas Lamprecht
2022-05-17  6:52 ` [pbs-devel] [PATCH proxmox-backup 5/5] ui: SyncView/SyncJobEdit: unify store/namespace gettext Dominik Csapak

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=20220517065215.327699-1-d.csapak@proxmox.com \
    --to=d.csapak@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