From: Hannes Laimer <h.laimer@proxmox.com>
To: "Fabian Grünbichler" <f.gruenbichler@proxmox.com>,
pbs-devel@lists.proxmox.com,
"Thomas Lamprecht" <t.lamprecht@proxmox.com>
Subject: Re: applied: [PATCH proxmox-backup v8 00/13] fixes #6195: add support for moving groups and namespaces
Date: Fri, 24 Apr 2026 10:43:31 +0200 [thread overview]
Message-ID: <76dedf1f-dc8c-42da-8d9f-ebb5b6616d09@proxmox.com> (raw)
In-Reply-To: <1777018910.mv34jbslq9.astroid@yuna.none>
On 2026-04-24 10:30, Fabian Grünbichler wrote:
> On April 24, 2026 12:38 am, Thomas Lamprecht wrote:
>> On Wed, 22 Apr 2026 15:39:38 +0200, Hannes Laimer wrote:
>>> Add support for moving backup groups and entire namespace subtrees to
>>> a different location within the same datastore.
>>>
>>> Groups are moved with exclusive per-group and per-snapshot locking.
>>> For S3, objects are copied to the target prefix before deleting the
>>> source. Namespace moves process groups individually, deferring and
>>> retrying lock conflicts once, so partially failed moves can be
>>> completed with move-group.
>>>
>>> [...]
>>
>> Applied, thanks!
>>
>> Squashed in the relatively trivial fixes for what Michael found, but I really
>> could not find any issue with locking after multiple looks, so either that came
>> from some side effect in testing or we'd need more info for a good reproducer.
>
> I can reproduce this easily, and the cause is that the
> proxmox-backup-manager CLI handlers directly execute the API endpoints,
> instead of going via the proxy..
>
> that causes some parent dirs in the locking hiearchy to have the wrong
> ownership (755 root:root instead of 755 backup:backup), which then turns
> into
>
> failed to delete snapshot - Error { context: "while destroying snapshot \'BackupDir { store: \"test\", ns: BackupNamespace { inner: [\"foobar\"], len: 7 }, dir: BackupDir { group: BackupGroup { ty: Host, id: \"bookworm\" }, time: 1674040234 }, backup_time_string: \"2023-01-18T11:10:34Z\" }\'", source: Error { context: "unable to acquire snapshot lock \"/run/proxmox-backup/locks/test/foobar/host-bookworm-2023\\\\x2d01\\\\x2d18T11\\\\x3a10\\\\x3a34Z\"", source: "mkstemp \"/run/proxmox-backup/locks/test/foobar/host-bookworm-2023\\\\x2d01\\\\x2d18T11\\\\x3a10\\\\x3a34Z.tmp_XXXXXX\" failed: EACCES: Permission denied", }, } (400)
>
> because it's not possible for the user backup to create new lock files
> in that directory.. cleared by a reboot or recursive chown, and fixed by
> either moving those commands to the client, or letting manager connect
> to the API.
>
> it's also a bit weird that
> - create namespace
> - list namespaces
> - delete namespace
>
> for namespaces are all in proxmox-backup-client, but moving a namespace
> is only available in proxmox-backup-manager which lacks all of the
> above..
>
> similarly, interactions with groups are in the client:
> - create snapshot (and thus implictly groups)
> - forget snapshots by pruning a group
> - forget individual snapshots
> - forgetting a whole group
> - listing snapshots (and thus groups)
> - changing group ownership
>
> but moving a group is only available in proxmox-backup-manager again,
> which has no other group-level commands AFAICT?
right, these shouldn't be in the manager. I'll send a fixup moving them!
that should also fix the permissions problem, thanks!
prev parent reply other threads:[~2026-04-24 8:43 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-22 13:39 Hannes Laimer
2026-04-22 13:39 ` [PATCH proxmox-backup v8 01/13] ui: show empty groups Hannes Laimer
2026-04-22 13:39 ` [PATCH proxmox-backup v8 02/13] datastore: lift check_namespace_depth_limit to pbs-datastore Hannes Laimer
2026-04-22 13:39 ` [PATCH proxmox-backup v8 03/13] datastore: have BackupGroup::destroy consume the group lock Hannes Laimer
2026-04-22 13:39 ` [PATCH proxmox-backup v8 04/13] datastore: split remove_namespace into flat and recursive variants Hannes Laimer
2026-04-22 13:39 ` [PATCH proxmox-backup v8 05/13] datastore: add move journal for coordinating with gc phase 1 Hannes Laimer
2026-04-22 13:39 ` [PATCH proxmox-backup v8 06/13] datastore: add move-group Hannes Laimer
2026-04-22 13:39 ` [PATCH proxmox-backup v8 07/13] datastore: add move-namespace Hannes Laimer
2026-04-22 13:39 ` [PATCH proxmox-backup v8 08/13] docs: add section on moving namespaces and groups Hannes Laimer
2026-04-22 13:39 ` [PATCH proxmox-backup v8 09/13] api: add POST endpoint for move-group Hannes Laimer
2026-04-22 13:39 ` [PATCH proxmox-backup v8 10/13] api: add POST endpoint for move-namespace Hannes Laimer
2026-04-22 13:39 ` [PATCH proxmox-backup v8 11/13] ui: add move group action Hannes Laimer
2026-04-23 13:35 ` Michael Köppl
2026-04-23 13:47 ` Hannes Laimer
2026-04-22 13:39 ` [PATCH proxmox-backup v8 12/13] ui: add move namespace action Hannes Laimer
2026-04-23 14:49 ` Michael Köppl
2026-04-22 13:39 ` [PATCH proxmox-backup v8 13/13] cli: add move-namespace and move-group commands Hannes Laimer
2026-04-23 16:29 ` [PATCH proxmox-backup v8 00/13] fixes #6195: add support for moving groups and namespaces Michael Köppl
2026-04-23 22:38 ` applied: " Thomas Lamprecht
2026-04-24 8:31 ` Fabian Grünbichler
2026-04-24 8:43 ` Hannes Laimer [this message]
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=76dedf1f-dc8c-42da-8d9f-ebb5b6616d09@proxmox.com \
--to=h.laimer@proxmox.com \
--cc=f.gruenbichler@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
--cc=t.lamprecht@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox