[pbs-devel] [PATCH proxmox-backup v2 1/6] datastore: add new thread settings to tuning options
Nicolas Frey
n.frey at proxmox.com
Mon Nov 24 12:04:22 CET 2025
add a new field to the `DataStoreImpl` to store the verify job thread
configuration from the tuning options
Reviewed-by: Christian Ebner <c.ebner at proxmox.com>
Tested-by: Christian Ebner <c.ebner at proxmox.com>
Signed-off-by: Nicolas Frey <n.frey at proxmox.com>
---
Changes since v1:
* make the `new` fn not pub
* add docstring to `thread_settings` fn
pbs-datastore/src/datastore.rs | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/pbs-datastore/src/datastore.rs b/pbs-datastore/src/datastore.rs
index 65299cca..8d3dff4d 100644
--- a/pbs-datastore/src/datastore.rs
+++ b/pbs-datastore/src/datastore.rs
@@ -153,6 +153,7 @@ pub struct DataStoreImpl {
sync_level: DatastoreFSyncLevel,
backend_config: DatastoreBackendConfig,
lru_store_caching: Option<LocalDatastoreLruCache>,
+ thread_settings: DatastoreThreadSettings,
}
impl DataStoreImpl {
@@ -169,6 +170,7 @@ impl DataStoreImpl {
sync_level: Default::default(),
backend_config: Default::default(),
lru_store_caching: None,
+ thread_settings: Default::default(),
})
}
}
@@ -263,6 +265,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 {
+ fn new(
+ 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)]
@@ -545,6 +568,11 @@ impl DataStore {
None
};
+ let thread_settings = DatastoreThreadSettings::new(
+ tuning.default_verification_workers,
+ tuning.default_verification_readers,
+ );
+
Ok(DataStoreImpl {
chunk_store,
gc_mutex: Mutex::new(None),
@@ -555,6 +583,7 @@ impl DataStore {
sync_level: tuning.sync_level.unwrap_or_default(),
backend_config,
lru_store_caching,
+ thread_settings,
})
}
@@ -654,6 +683,11 @@ impl DataStore {
self.inner.chunk_store.base_path()
}
+ /// Returns the thread settings for this datastore
+ pub fn thread_settings(&self) -> &DatastoreThreadSettings {
+ &self.inner.thread_settings
+ }
+
/// 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();
--
2.47.3
More information about the pbs-devel
mailing list