From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 587529220D for ; Fri, 5 Apr 2024 11:49:32 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 39DBB10BD6 for ; Fri, 5 Apr 2024 11:49:32 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Fri, 5 Apr 2024 11:49:31 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 5B4A246085 for ; Fri, 5 Apr 2024 11:49:31 +0200 (CEST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable In-Reply-To: <20240328123707.336951-54-c.ebner@proxmox.com> References: <20240328123707.336951-1-c.ebner@proxmox.com> <20240328123707.336951-54-c.ebner@proxmox.com> From: Fabian =?utf-8?q?Gr=C3=BCnbichler?= To: Christian Ebner , pbs-devel@lists.proxmox.com Date: Fri, 05 Apr 2024 11:49:25 +0200 Message-ID: <171231056527.1926770.1265427488156613699@yuna.proxmox.com> User-Agent: alot/0.10 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.058 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 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [proxmox.com, create.rs, extract.rs, tools.rs] Subject: Re: [pbs-devel] [PATCH v3 proxmox-backup 53/58] client: pxar: opt encode cli exclude patterns as CliParams 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: , X-List-Received-Date: Fri, 05 Apr 2024 09:49:32 -0000 Quoting Christian Ebner (2024-03-28 13:37:02) > Instead of encoding the pxar cli exclude patterns as regular file > within the root directory of an archive, store this information > directly after the pxar format version entry in a new pxar cli params > entry. >=20 > This behaviour is however currently exclusive to the archives written > with format version 2 in a split metadata and payload case. >=20 > This is a breaking change for the encoding of new cli exclude > parameters. Any new exclude parameter will not be added to an already > present .pxar-cliexclude file, and it will not be created if not > present. >=20 > Signed-off-by: Christian Ebner > --- > changes since version 2: > - not present in previous version >=20 > pbs-client/src/pxar/create.rs | 25 +++++++++++++++-------- > pbs-client/src/pxar/extract.rs | 3 ++- > pbs-client/src/pxar/tools.rs | 6 ++++++ > src/tape/file_formats/snapshot_archive.rs | 8 ++++++-- > 4 files changed, 31 insertions(+), 11 deletions(-) >=20 > diff --git a/pbs-client/src/pxar/create.rs b/pbs-client/src/pxar/create.rs > index 461509c39..5f2270fe8 100644 > --- a/pbs-client/src/pxar/create.rs > +++ b/pbs-client/src/pxar/create.rs > @@ -343,13 +343,6 @@ where > set.insert(stat.st_dev); > } > =20 > - let mut encoder =3D Encoder::new( > - &mut writers.writer, > - &metadata, > - writers.payload_writer.as_mut(), > - ) > - .await?; > - > let mut patterns =3D options.patterns; > =20 > if options.skip_lost_and_found { > @@ -359,6 +352,14 @@ where > MatchType::Exclude, > )?); > } > + > + let cli_params_content =3D generate_pxar_excludes_cli(&patterns[..]); > + let cli_params =3D if options.previous_ref.is_some() { > + Some(cli_params_content.as_slice()) > + } else { > + None > + }; > + > let (previous_payload_index, previous_metadata_accessor) =3D > if let Some(refs) =3D options.previous_ref { > ( > @@ -369,6 +370,14 @@ where > (None, None) > }; > =20 > + let mut encoder =3D Encoder::new( > + &mut writers.writer, > + &metadata, > + writers.payload_writer.as_mut(), > + cli_params, > + ) > + .await?; > + > let mut archiver =3D Archiver { > feature_flags, > fs_feature_flags, > @@ -454,7 +463,7 @@ impl Archiver { > =20 > let mut file_list =3D self.generate_directory_file_list(&mut= dir, is_root)?; > =20 > - if is_root && old_patterns_count > 0 { > + if is_root && old_patterns_count > 0 && previous_metadata_ac= cessor.is_none() { > file_list.push(FileListEntry { > name: CString::new(".pxarexclude-cli").unwrap(), > path: PathBuf::new(), > diff --git a/pbs-client/src/pxar/extract.rs b/pbs-client/src/pxar/extract= .rs > index 56f8d7adc..46ff8fc80 100644 > --- a/pbs-client/src/pxar/extract.rs > +++ b/pbs-client/src/pxar/extract.rs > @@ -267,7 +267,8 @@ where > }; > =20 > let extract_res =3D match (did_match, entry.kind()) { > - (_, EntryKind::Version(_)) =3D> Ok(()), > + (_, EntryKind::Version(_version)) =3D> Ok(()), > + (_, EntryKind::CliParams(_data)) =3D> Ok(()), > (_, EntryKind::Directory) =3D> { > self.callback(entry.path()); > =20 > diff --git a/pbs-client/src/pxar/tools.rs b/pbs-client/src/pxar/tools.rs > index 4e9bd5b60..478acdc0f 100644 > --- a/pbs-client/src/pxar/tools.rs > +++ b/pbs-client/src/pxar/tools.rs > @@ -173,6 +173,12 @@ pub fn format_multi_line_entry(entry: &Entry) -> Str= ing { > =20 > let (size, link, type_name, payload_offset) =3D match entry.kind() { > EntryKind::Version(version) =3D> (format!("{version:?}"), String= ::new(), "version", None), > + EntryKind::CliParams(params) =3D> ( > + "0".to_string(), > + format!(" -> {:?}", params.as_os_str()), > + "symlink", > + None, this seems wrong ;) > + ), > EntryKind::File { > size, > payload_offset, > diff --git a/src/tape/file_formats/snapshot_archive.rs b/src/tape/file_fo= rmats/snapshot_archive.rs > index 43d1cf9c3..7e052919b 100644 > --- a/src/tape/file_formats/snapshot_archive.rs > +++ b/src/tape/file_formats/snapshot_archive.rs > @@ -58,8 +58,12 @@ pub fn tape_write_snapshot_archive<'a>( > )); > } > =20 > - let mut encoder =3D > - pxar::encoder::sync::Encoder::new(PxarTapeWriter::new(writer= ), &root_metadata, None)?; > + let mut encoder =3D pxar::encoder::sync::Encoder::new( > + PxarTapeWriter::new(writer), > + &root_metadata, > + None, > + None, > + )?; > =20 > for filename in file_list.iter() { > let mut file =3D snapshot_reader.open_file(filename).map_err= (|err| { > --=20 > 2.39.2 >=20 >=20 >=20 > _______________________________________________ > pbs-devel mailing list > pbs-devel@lists.proxmox.com > https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel >=20 >