From: Christian Ebner <c.ebner@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [pbs-devel] [PATCH proxmox-backup v2 3/4] chunk store: clarify chunk marker helper creates marker if missing
Date: Mon, 24 Nov 2025 10:40:17 +0100 [thread overview]
Message-ID: <20251124094018.224661-4-c.ebner@proxmox.com> (raw)
In-Reply-To: <20251124094018.224661-1-c.ebner@proxmox.com>
Rename replace_chunk_with_marker() to
replace_chunk_with_marker_or_create_marker() and adapt the docstring
so it is clear that this also creates the marker if the chunk file
is missing.
Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
---
Changes since version 1:
- not present
pbs-datastore/src/chunk_store.rs | 8 ++++++--
pbs-datastore/src/datastore.rs | 4 +++-
pbs-datastore/src/local_datastore_lru_cache.rs | 10 ++++++++--
3 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/pbs-datastore/src/chunk_store.rs b/pbs-datastore/src/chunk_store.rs
index 143848838..f53460664 100644
--- a/pbs-datastore/src/chunk_store.rs
+++ b/pbs-datastore/src/chunk_store.rs
@@ -716,10 +716,14 @@ impl ChunkStore {
/// Replace a chunk file with a zero size file in the chunk store.
///
/// Used to evict chunks from the local datastore cache, while keeping them as in-use markers
- /// for garbage collection. Returns with success also if chunk file is not pre-existing.
+ /// for garbage collection. Returns with success also if chunk file is not pre-existing,
+ /// also creating the marker file in that case.
///
/// Safety: chunk store mutex must be held!
- pub(crate) unsafe fn replace_chunk_with_marker(&self, digest: &[u8; 32]) -> Result<(), Error> {
+ pub(crate) unsafe fn replace_chunk_with_marker_or_create_marker(
+ &self,
+ digest: &[u8; 32],
+ ) -> Result<(), Error> {
let (chunk_path, digest_str) = self.chunk_path(digest);
Self::create_marker_file(&chunk_path)
.map_err(|err| format_err!("clear chunk failed for {digest_str} - {err}"))?;
diff --git a/pbs-datastore/src/datastore.rs b/pbs-datastore/src/datastore.rs
index 1b489b449..d88785c6d 100644
--- a/pbs-datastore/src/datastore.rs
+++ b/pbs-datastore/src/datastore.rs
@@ -1714,7 +1714,9 @@ impl DataStore {
if self.inner.chunk_store.clear_chunk_expected_mark(&digest)? {
unsafe {
// chunk store lock held
- self.inner.chunk_store.replace_chunk_with_marker(&digest)?;
+ self.inner
+ .chunk_store
+ .replace_chunk_with_marker_or_create_marker(&digest)?;
}
Some(SystemTime::now())
} else {
diff --git a/pbs-datastore/src/local_datastore_lru_cache.rs b/pbs-datastore/src/local_datastore_lru_cache.rs
index ae2215be1..f39b26ebb 100644
--- a/pbs-datastore/src/local_datastore_lru_cache.rs
+++ b/pbs-datastore/src/local_datastore_lru_cache.rs
@@ -42,7 +42,10 @@ impl LocalDatastoreLruCache {
}
self.cache.insert(*digest, (), |digest| {
// Safety: lock acquired above, this is executed inline!
- unsafe { self.store.replace_chunk_with_marker(&digest) }
+ unsafe {
+ self.store
+ .replace_chunk_with_marker_or_create_marker(&digest)
+ }
})
}
@@ -80,7 +83,10 @@ impl LocalDatastoreLruCache {
let _lock = self.store.mutex().lock().unwrap();
self.cache.insert(*digest, (), |digest| {
// Safety: lock acquired above, this is executed inline
- unsafe { self.store.replace_chunk_with_marker(&digest) }
+ unsafe {
+ self.store
+ .replace_chunk_with_marker_or_create_marker(&digest)
+ }
})?;
Ok(Some(chunk))
}
--
2.47.3
_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
next prev parent reply other threads:[~2025-11-24 9:40 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-24 9:40 [pbs-devel] [PATCH proxmox-backup v2 0/4] fix local marker cleanup for unreferenced, s3 only chunks Christian Ebner
2025-11-24 9:40 ` [pbs-devel] [PATCH proxmox-backup v2 1/4] GC: s3: " Christian Ebner
2025-11-24 9:40 ` [pbs-devel] [PATCH proxmox-backup v2 2/4] chunk store: fix and expand the clear_chunk_expected_mark() docstring Christian Ebner
2025-11-24 9:40 ` Christian Ebner [this message]
2025-11-24 9:40 ` [pbs-devel] [PATCH proxmox-backup v2 4/4] datastore: refactor common delete list logic into closure Christian Ebner
2025-11-24 12:23 ` [pbs-devel] applied: [PATCH proxmox-backup v2 0/4] fix local marker cleanup for unreferenced, s3 only chunks Thomas Lamprecht
2025-11-24 12:51 ` 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=20251124094018.224661-4-c.ebner@proxmox.com \
--to=c.ebner@proxmox.com \
--cc=pbs-devel@lists.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.