From: Christian Ebner <c.ebner@proxmox.com>
To: Thomas Ellmenreich <t.ellmenreich@proxmox.com>,
pbs-devel@lists.proxmox.com
Subject: Re: [PATCH proxmox-backup 1/2] backup writer: add constructor for BackupWriterOptions
Date: Thu, 24 Sep 2026 18:06:45 +0200 [thread overview]
Message-ID: <c77423ec-e328-45ec-a926-9a771d1383a8@proxmox.com> (raw)
In-Reply-To: <20260923102759.139819-2-t.ellmenreich@proxmox.com>
On 9/23/26 12:28 PM, Thomas Ellmenreich wrote:
> Instead of creating BackupWriterOptions directly, use a new function for it.
> The goal is to be able to remove values from the constructor and provide
> default values for them.
Might make sense to use a builder like pattern [0] here instead and set
sensible defaults? Would especially setting the flags be more verbose
without needing to lookup the parameter definition and order of new().
[0] https://www.lurklurk.org/effective-rust/builders.html
> Signed-off-by: Thomas Ellmenreich <t.ellmenreich@proxmox.com>
> ---
> examples/upload-speed.rs | 16 ++++++++--------
> pbs-client/src/backup_writer.rs | 22 ++++++++++++++++++++++
> proxmox-backup-client/src/benchmark.rs | 16 ++++++++--------
> proxmox-backup-client/src/main.rs | 16 ++++++++--------
> src/server/push.rs | 18 +++++++++---------
> 5 files changed, 55 insertions(+), 33 deletions(-)
>
> diff --git a/examples/upload-speed.rs b/examples/upload-speed.rs
> index 5a63e0f09..a0b742854 100644
> --- a/examples/upload-speed.rs
> +++ b/examples/upload-speed.rs
> @@ -19,15 +19,15 @@ async fn upload_speed() -> Result<f64, Error> {
>
> let client = BackupWriter::start(
> &client,
> - BackupWriterOptions {
> + BackupWriterOptions::new(
> datastore,
> - ns: &BackupNamespace::root(),
> - backup: &(BackupType::Host, "speedtest".to_string(), backup_time).into(),
> - crypt_config: None,
> - debug: false,
> - benchmark: true,
> - no_cache: false,
> - },
> + &BackupNamespace::root(),
> + &(BackupType::Host, "speedtest".to_string(), backup_time).into(),
> + None,
> + false,
> + true,
> + false,
> + ),
> )
> .await?;
>
> diff --git a/pbs-client/src/backup_writer.rs b/pbs-client/src/backup_writer.rs
> index 7f7535746..7c3cb21b7 100644
> --- a/pbs-client/src/backup_writer.rs
> +++ b/pbs-client/src/backup_writer.rs
> @@ -100,6 +100,28 @@ pub struct BackupWriterOptions<'a> {
> pub no_cache: bool,
> }
>
> +impl<'a> BackupWriterOptions<'a> {
> + pub fn new(
> + datastore: &'a str,
> + ns: &'a BackupNamespace,
> + backup: &'a BackupDir,
> + crypt_config: Option<Arc<CryptConfig>>,
> + debug: bool,
> + benchmark: bool,
> + no_cache: bool,
> + ) -> Self {
> + Self {
> + datastore,
> + ns,
> + backup,
> + crypt_config,
> + debug,
> + benchmark,
> + no_cache,
> + }
> + }
> +}
> +
> impl BackupWriter {
> fn new(h2: H2Client, abort: AbortHandle, crypt_config: Option<Arc<CryptConfig>>) -> Arc<Self> {
> Arc::new(Self {
> diff --git a/proxmox-backup-client/src/benchmark.rs b/proxmox-backup-client/src/benchmark.rs
> index a937bacb9..af9113ecb 100644
> --- a/proxmox-backup-client/src/benchmark.rs
> +++ b/proxmox-backup-client/src/benchmark.rs
> @@ -238,15 +238,15 @@ async fn test_upload_speed(
> log::debug!("Connecting to backup server");
> let client = BackupWriter::start(
> &client,
> - BackupWriterOptions {
> - datastore: repo.store(),
> - ns: &BackupNamespace::root(),
> - backup: &(BackupType::Host, "benchmark".to_string(), backup_time).into(),
> - crypt_config: crypt_config.clone(),
> - debug: false,
> - benchmark: true,
> + BackupWriterOptions::new(
> + repo.store(),
> + &BackupNamespace::root(),
> + &(BackupType::Host, "benchmark".to_string(), backup_time).into(),
> + crypt_config.clone(),
> + false,
> + true,
> no_cache,
> - },
> + ),
> )
> .await?;
>
> diff --git a/proxmox-backup-client/src/main.rs b/proxmox-backup-client/src/main.rs
> index 5238a75ea..3aaaac39e 100644
> --- a/proxmox-backup-client/src/main.rs
> +++ b/proxmox-backup-client/src/main.rs
> @@ -1046,15 +1046,15 @@ async fn create_backup(
>
> let client = BackupWriter::start(
> &http_client,
> - BackupWriterOptions {
> - datastore: repo.store(),
> - ns: &backup_ns,
> - backup: &snapshot,
> - crypt_config: crypt_config.clone(),
> - debug: true,
> - benchmark: false,
> + BackupWriterOptions::new(
> + repo.store(),
> + &backup_ns,
> + &snapshot,
> + crypt_config.clone(),
> + true,
> + false,
> no_cache,
> - },
> + ),
> )
> .await?;
>
> diff --git a/src/server/push.rs b/src/server/push.rs
> index 487fd91e3..665c77a8d 100644
> --- a/src/server/push.rs
> +++ b/src/server/push.rs
> @@ -1132,17 +1132,17 @@ pub(crate) async fn push_snapshot(
> // Writer instance locks the snapshot on the remote side
> let backup_writer = BackupWriter::start(
> ¶ms.target.client,
> - BackupWriterOptions {
> - datastore: params.target.repo.store(),
> - ns: &target_ns,
> - backup: snapshot,
> - crypt_config: encrypt_using_key
> + BackupWriterOptions::new(
> + params.target.repo.store(),
> + &target_ns,
> + snapshot,
> + encrypt_using_key
> .as_ref()
> .map(|(_id, conf)| Arc::clone(conf)),
> - debug: false,
> - benchmark: false,
> - no_cache: false,
> - },
> + false,
> + false,
> + false,
> + ),
> )
> .await
> .with_context(|| prefix.to_string())?;
next prev parent reply other threads:[~2026-09-24 16:06 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-23 10:27 [RFC proxmox-backup 0/2] backup log: reduce logging during backup Thomas Ellmenreich
2026-09-23 10:27 ` [PATCH proxmox-backup 1/2] backup writer: add constructor for BackupWriterOptions Thomas Ellmenreich
2026-09-24 16:06 ` Christian Ebner [this message]
2026-09-23 10:27 ` [PATCH proxmox-backup 2/2] fix #4646: backup writer: base debug flag on log level Thomas Ellmenreich
2026-09-24 16:00 ` [RFC proxmox-backup 0/2] backup log: reduce logging during backup Christian Ebner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c77423ec-e328-45ec-a926-9a771d1383a8@proxmox.com \
--to=c.ebner@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
--cc=t.ellmenreich@proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox