[pbs-devel] [PATCH proxmox-backup 1/4] datastore: add new thread settings to tuning options

Christian Ebner c.ebner at proxmox.com
Fri Nov 21 15:15:36 CET 2025


On 11/21/25 1:31 PM, Nicolas Frey wrote:
> add a new field to the `DataStoreImpl` to store the verify job thread
> configuration from the tuning options
> 
> Signed-off-by: Nicolas Frey <n.frey at proxmox.com>
> ---
>   pbs-datastore/src/datastore.rs | 33 +++++++++++++++++++++++++++++++++
>   1 file changed, 33 insertions(+)
> 
> diff --git a/pbs-datastore/src/datastore.rs b/pbs-datastore/src/datastore.rs
> index 0a517923..fec9de78 100644
> --- a/pbs-datastore/src/datastore.rs
> +++ b/pbs-datastore/src/datastore.rs
> @@ -146,6 +146,7 @@ pub struct DataStoreImpl {
>       sync_level: DatastoreFSyncLevel,
>       backend_config: DatastoreBackendConfig,
>       lru_store_caching: Option<LocalDatastoreLruCache>,
> +    thread_settings: DatastoreThreadSettings,
>   }
>   
>   impl DataStoreImpl {
> @@ -162,6 +163,7 @@ impl DataStoreImpl {
>               sync_level: Default::default(),
>               backend_config: Default::default(),
>               lru_store_caching: None,
> +            thread_settings: Default::default(),
>           })
>       }
>   }
> @@ -256,6 +258,27 @@ impl DatastoreBackend {
>       }
>   }
>   
> +#[derive(Clone, Default)]
> +/// Amount of threads to use for certain jobs in a datastore.
> +pub struct DatastoreThreadSettings {
> +    /// # of threads to use to verify in verify job
> +    pub verify_job_verify_threads: Option<usize>,
> +    /// # of threads to use to read in verify job
> +    pub verify_job_read_threads: Option<usize>,
> +}
> +
> +impl DatastoreThreadSettings {
> +    pub fn new(

nit: no need to make the constructor pub, this can be limited to the 
module scope.

> +        verify_job_verify_threads: Option<usize>,
> +        verify_job_read_threads: Option<usize>,
> +    ) -> Self {
> +        Self {
> +            verify_job_verify_threads,
> +            verify_job_read_threads,
> +        }
> +    }
> +}
> +
>   impl DataStore {
>       // This one just panics on everything
>       #[doc(hidden)]
> @@ -532,6 +555,11 @@ impl DataStore {
>               None
>           };
>   
> +        let thread_settings = DatastoreThreadSettings::new(
> +            tuning.verify_job_verify_threads,
> +            tuning.verify_job_read_threads,
> +        );
> +
>           Ok(DataStoreImpl {
>               chunk_store,
>               gc_mutex: Mutex::new(None),
> @@ -542,6 +570,7 @@ impl DataStore {
>               sync_level: tuning.sync_level.unwrap_or_default(),
>               backend_config,
>               lru_store_caching,
> +            thread_settings,
>           })
>       }
>   
> @@ -641,6 +670,10 @@ impl DataStore {
>           self.inner.chunk_store.base_path()
>       }
>   
> +    pub fn thread_settings(&self) -> &DatastoreThreadSettings {
> +        &self.inner.thread_settings
> +    }
> +

nit: please add a short docstring for this method, although there are 
pre-existing methods without, we should add these moving forward

>       /// Returns the absolute path for a backup namespace on this datastore
>       pub fn namespace_path(&self, ns: &BackupNamespace) -> PathBuf {
>           let mut path = self.base_path();





More information about the pbs-devel mailing list