public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
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(
>           &params.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())?;





  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
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal