[pbs-devel] [PATCH proxmox-backup v9 18/46] datastore: create namespace marker in s3 backend
Christian Ebner
c.ebner at proxmox.com
Mon Jul 21 16:01:31 CEST 2025
On 7/21/25 3:52 PM, Hannes Laimer wrote:
> On Sat Jul 19, 2025 at 2:50 PM CEST, Christian Ebner wrote:
>> The S3 object store only allows to store objects, referenced by their
>> key. For backup namespaces datastores however use directories, so
>> they cannot be represented as one to one mapping.
>>
>> Instead, create an empty marker file for each namespace and operate
>> based on that.
>>
>> Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
>> ---
>> changes since version 8:
>> - use upload_on_replace_with_retry
>>
>> pbs-datastore/src/datastore.rs | 10 ++++++++++
>> 1 file changed, 10 insertions(+)
>>
>> diff --git a/pbs-datastore/src/datastore.rs b/pbs-datastore/src/datastore.rs
>> index bc829c5b8..5bb4e1777 100644
>> --- a/pbs-datastore/src/datastore.rs
>> +++ b/pbs-datastore/src/datastore.rs
>> @@ -44,6 +44,7 @@ static DATASTORE_MAP: LazyLock<Mutex<HashMap<String, Arc<DataStoreImpl>>>> =
>> LazyLock::new(|| Mutex::new(HashMap::new()));
>>
>> const GROUP_NOTES_FILE_NAME: &str = "notes";
>> +const NAMESPACE_MARKER_FILENAME: &str = ".namespace";
>>
>> /// checks if auth_id is owner, or, if owner is a token, if
>> /// auth_id is the user of the token
>> @@ -613,6 +614,15 @@ impl DataStore {
>> // construct ns before mkdir to enforce max-depth and name validity
>> let ns = BackupNamespace::from_parent_ns(parent, name)?;
>>
>> + if let DatastoreBackend::S3(s3_client) = self.backend()? {
>> + let object_key = crate::s3::object_key_from_path(&ns.path(), NAMESPACE_MARKER_FILENAME)
>> + .context("invalid namespace marker object key")?;
>
>
> hmmm, I didn't test this, but with our NS max depth of 7 (IIRC) and the
> linux max filename length of ~250 this "could" be larger than the 1024
> bytes an object key can be. Maybe we should check for that, even though
> I doubt this would ever be a problem..
Okay, can add a check to cover that as well.
More information about the pbs-devel
mailing list