From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 170BF1FF38F for ; 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: Date: Tue, 21 May 2024 15:19:36 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Beta To: Proxmox Backup Server development discussion , Christian Ebner References: <20240514103421.289431-1-c.ebner@proxmox.com> <20240514103421.289431-31-c.ebner@proxmox.com> Content-Language: en-US From: Dominik Csapak 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" 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 > --- > 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, > + manifest: &BackupManifest, > + crypt_config: Option>, > +) -> Result<(LocalDynamicReadAt, 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