[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