[pbs-devel] [PATCH v2 proxmox-backup 2/9] api: datastore: move reusable code out of thread

Christian Ebner c.ebner at proxmox.com
Fri Jun 7 13:37:45 CEST 2024


Move code that can be reused when having to  perform a lookup via the
pxar metadata archive instead of the catalog out of the thread.

Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
---
 src/api2/admin/datastore.rs | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/src/api2/admin/datastore.rs b/src/api2/admin/datastore.rs
index 854302999..117dab080 100644
--- a/src/api2/admin/datastore.rs
+++ b/src/api2/admin/datastore.rs
@@ -1678,30 +1678,30 @@ pub async fn catalog(
 ) -> Result<Vec<ArchiveEntry>, Error> {
     let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
 
-    tokio::task::spawn_blocking(move || {
-        let ns = ns.unwrap_or_default();
+    let ns = ns.unwrap_or_default();
 
-        let datastore = check_privs_and_load_store(
-            &store,
-            &ns,
-            &auth_id,
-            PRIV_DATASTORE_READ,
-            PRIV_DATASTORE_BACKUP,
-            Some(Operation::Read),
-            &backup_dir.group,
-        )?;
+    let datastore = check_privs_and_load_store(
+        &store,
+        &ns,
+        &auth_id,
+        PRIV_DATASTORE_READ,
+        PRIV_DATASTORE_BACKUP,
+        Some(Operation::Read),
+        &backup_dir.group,
+    )?;
 
-        let backup_dir = datastore.backup_dir(ns, backup_dir)?;
+    let backup_dir = datastore.backup_dir(ns, backup_dir)?;
 
-        let file_name = CATALOG_NAME;
+    let file_name = CATALOG_NAME;
 
-        let (manifest, files) = read_backup_index(&backup_dir)?;
-        for file in files {
-            if file.filename == file_name && file.crypt_mode == Some(CryptMode::Encrypt) {
-                bail!("cannot decode '{}' - is encrypted", file_name);
-            }
+    let (manifest, files) = read_backup_index(&backup_dir)?;
+    for file in files {
+        if file.filename == file_name && file.crypt_mode == Some(CryptMode::Encrypt) {
+            bail!("cannot decode '{file_name}' - is encrypted");
         }
+    }
 
+    tokio::task::spawn_blocking(move || {
         let mut path = datastore.base_path();
         path.push(backup_dir.relative_path());
         path.push(file_name);
-- 
2.39.2





More information about the pbs-devel mailing list