[pbs-devel] [PATCH proxmox-backup 14/17] datastore: add locking to protect against races on chunk insert for s3
Christian Ebner
c.ebner at proxmox.com
Mon Nov 3 12:31:17 CET 2025
Acquire the per-chunk file lock to get exclusive access to the chunk
on insert and make it possible to guarantee that s3 backend
operations and the local caches reflect the consistent state without
other operations such as verify chunk renaming or garbage collection
interfering.
Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
---
pbs-datastore/src/datastore.rs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/pbs-datastore/src/datastore.rs b/pbs-datastore/src/datastore.rs
index 1b3f3496c..b36424131 100644
--- a/pbs-datastore/src/datastore.rs
+++ b/pbs-datastore/src/datastore.rs
@@ -1867,6 +1867,7 @@ impl DataStore {
digest: &[u8; 32],
backend: &DatastoreBackend,
) -> Result<(bool, u64), Error> {
+ let _chunk_lock_guard = self.lock_chunk_for_backend(digest)?;
match backend {
DatastoreBackend::Filesystem => self.inner.chunk_store.insert_chunk(chunk, digest),
DatastoreBackend::S3(s3_client) => self.insert_chunk_cached(chunk, digest, &s3_client),
@@ -1888,6 +1889,7 @@ impl DataStore {
digest: &[u8; 32],
backend: &DatastoreBackend,
) -> Result<(bool, u64), Error> {
+ let _chunk_lock_guard = self.lock_chunk_for_backend(digest)?;
match backend {
DatastoreBackend::Filesystem => self.inner.chunk_store.insert_chunk(chunk, digest),
DatastoreBackend::S3(s3_client) => {
--
2.47.3
More information about the pbs-devel
mailing list