mirror of
https://git.proxmox.com/git/proxmox-backup
synced 2025-08-07 06:24:24 +00:00
api: datastore: move reusable code out of thread
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@proxmox.com>
This commit is contained in:
parent
30ea695518
commit
3b95f09522
@ -1678,30 +1678,30 @@ pub async fn catalog(
|
|||||||
) -> Result<Vec<ArchiveEntry>, Error> {
|
) -> Result<Vec<ArchiveEntry>, Error> {
|
||||||
let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
|
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(
|
let datastore = check_privs_and_load_store(
|
||||||
&store,
|
&store,
|
||||||
&ns,
|
&ns,
|
||||||
&auth_id,
|
&auth_id,
|
||||||
PRIV_DATASTORE_READ,
|
PRIV_DATASTORE_READ,
|
||||||
PRIV_DATASTORE_BACKUP,
|
PRIV_DATASTORE_BACKUP,
|
||||||
Some(Operation::Read),
|
Some(Operation::Read),
|
||||||
&backup_dir.group,
|
&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)?;
|
let (manifest, files) = read_backup_index(&backup_dir)?;
|
||||||
for file in files {
|
for file in files {
|
||||||
if file.filename == file_name && file.crypt_mode == Some(CryptMode::Encrypt) {
|
if file.filename == file_name && file.crypt_mode == Some(CryptMode::Encrypt) {
|
||||||
bail!("cannot decode '{}' - is encrypted", file_name);
|
bail!("cannot decode '{file_name}' - is encrypted");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tokio::task::spawn_blocking(move || {
|
||||||
let mut path = datastore.base_path();
|
let mut path = datastore.base_path();
|
||||||
path.push(backup_dir.relative_path());
|
path.push(backup_dir.relative_path());
|
||||||
path.push(file_name);
|
path.push(file_name);
|
||||||
|
Loading…
Reference in New Issue
Block a user