From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pbs-devel-bounces@lists.proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68])
	by lore.proxmox.com (Postfix) with ESMTPS id 170BF1FF38F
	for <inbox@lore.proxmox.com>; Tue, 21 May 2024 15:19:22 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 1ABCB18F45;
	Tue, 21 May 2024 15:19:39 +0200 (CEST)
Message-ID: <aa86a2f7-5711-480c-890e-4e3ea45a1698@proxmox.com>
Date: Tue, 21 May 2024 15:19:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird Beta
To: Proxmox Backup Server development discussion
 <pbs-devel@lists.proxmox.com>, Christian Ebner <c.ebner@proxmox.com>
References: <20240514103421.289431-1-c.ebner@proxmox.com>
 <20240514103421.289431-31-c.ebner@proxmox.com>
Content-Language: en-US
From: Dominik Csapak <d.csapak@proxmox.com>
In-Reply-To: <20240514103421.289431-31-c.ebner@proxmox.com>
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.016 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DMARC_MISSING             0.1 Missing DMARC policy
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_PASS               -0.001 SPF: sender matches SPF record
Subject: Re: [pbs-devel] [PATCH v6 proxmox-backup 30/65] file restore:
 factor out getting pxar reader
X-BeenThere: pbs-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox Backup Server development discussion
 <pbs-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/>
List-Post: <mailto:pbs-devel@lists.proxmox.com>
List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox Backup Server development discussion
 <pbs-devel@lists.proxmox.com>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Errors-To: pbs-devel-bounces@lists.proxmox.com
Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com>

On 5/14/24 12:33, Christian Ebner wrote:
> Factor out the logic to get the pxar reader into a dedicated function
> so it can be reused to get the payload data archive reader instance.
> 
> Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
> ---
>   proxmox-file-restore/src/main.rs | 44 ++++++++++++++++++++------------
>   1 file changed, 28 insertions(+), 16 deletions(-)
> 
> diff --git a/proxmox-file-restore/src/main.rs b/proxmox-file-restore/src/main.rs
> index 685ce34d9..8a11cff65 100644
> --- a/proxmox-file-restore/src/main.rs
> +++ b/proxmox-file-restore/src/main.rs
> @@ -34,7 +34,7 @@ use pbs_client::{BackupReader, BackupRepository, RemoteChunkReader};
>   use pbs_datastore::catalog::{ArchiveEntry, CatalogReader, DirEntryAttribute};
>   use pbs_datastore::dynamic_index::{BufferedDynamicReader, LocalDynamicReadAt};
>   use pbs_datastore::index::IndexFile;
> -use pbs_datastore::CATALOG_NAME;
> +use pbs_datastore::{BackupManifest, CATALOG_NAME};
>   use pbs_key_config::decrypt_key;
>   use pbs_tools::crypt_config::CryptConfig;
>   
> @@ -335,6 +335,31 @@ async fn list(
>       Ok(())
>   }
>   
> +async fn get_local_pxar_reader(

nit: this probably shouldn't be named 'get_local_pxar_reader' since none of it is 'local' ?

also this has now the same name as the function used in the datastore api to download
files from pxar (locally)

probably 'get_remote_pxar_reader' ?

> +    archive_name: &str,
> +    client: Arc<BackupReader>,
> +    manifest: &BackupManifest,
> +    crypt_config: Option<Arc<CryptConfig>>,
> +) -> Result<(LocalDynamicReadAt<RemoteChunkReader>, u64), Error> {
> +    let index = client
> +        .download_dynamic_index(&manifest, &archive_name)
> +        .await?;
> +    let most_used = index.find_most_used_chunks(8);
> +
> +    let file_info = manifest.lookup_file_info(&archive_name)?;
> +    let chunk_reader = RemoteChunkReader::new(
> +        client.clone(),
> +        crypt_config,
> +        file_info.chunk_crypt_mode(),
> +        most_used,
> +    );
> +
> +    let reader = BufferedDynamicReader::new(index, chunk_reader);
> +    let archive_size = reader.archive_size();
> +
> +    Ok((LocalDynamicReadAt::new(reader), archive_size))
> +}
> +
>   #[api(
>       input: {
>           properties: {
> @@ -452,21 +477,8 @@ async fn extract(
>   
>       match path {
>           ExtractPath::Pxar(archive_name, path) => {
> -            let file_info = manifest.lookup_file_info(&archive_name)?;
> -            let index = client
> -                .download_dynamic_index(&manifest, &archive_name)
> -                .await?;
> -            let most_used = index.find_most_used_chunks(8);
> -            let chunk_reader = RemoteChunkReader::new(
> -                client.clone(),
> -                crypt_config,
> -                file_info.chunk_crypt_mode(),
> -                most_used,
> -            );
> -            let reader = BufferedDynamicReader::new(index, chunk_reader);
> -
> -            let archive_size = reader.archive_size();
> -            let reader = LocalDynamicReadAt::new(reader);
> +            let (reader, archive_size) =
> +                get_local_pxar_reader(&archive_name, client, &manifest, crypt_config).await?;
>               let decoder = Accessor::new(reader, archive_size, None).await?;
>               extract_to_target(decoder, &path, target, format, zstd).await?;
>           }



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel