From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 117501FF13C for ; Thu, 16 Apr 2026 19:20:14 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id E6CA5DF8C; Thu, 16 Apr 2026 19:20:13 +0200 (CEST) Message-ID: <27c4f4d3-6f1b-4b9f-8183-46085eda2de3@proxmox.com> Date: Thu, 16 Apr 2026 19:19:39 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: superseded: [PATCH proxmox-backup v6 0/8] fixes #6195: add support for moving groups and namespaces To: pbs-devel@lists.proxmox.com References: <20260331123409.198353-1-h.laimer@proxmox.com> Content-Language: en-US From: Hannes Laimer In-Reply-To: <20260331123409.198353-1-h.laimer@proxmox.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1776359901142 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.083 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: MHSOBXNSKKAASBLZNVGXERYSKXRLW6JV X-Message-ID-Hash: MHSOBXNSKKAASBLZNVGXERYSKXRLW6JV X-MailFrom: h.laimer@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox Backup Server development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: superseded-by: https://lore.proxmox.com/pbs-devel/20260416171830.266553-1-h.laimer@proxmox.com/ On 2026-03-31 14:33, 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. > > > v6, thanks @Fabian and @Dominik!: > - drop ns locks, lock everything directly, like we do for delete. only > difference, we dont do partial group moves, reason being that we > cant move single snapshots, so cleanup would not really be possible > - ui: disable purne for empty groups > - ui: dont render verification status for empty groups > > v5, thanks @Chris!: > - lock dir instead of `.ns-lock` file > - explicitly drop ns lock guards in specific order > - improve cleanup of partially failed s3 moves, we now create the local > empty dir+owner file before we start copying s3 objects, if any of > the s3 ops fail, the dir stays behind and can be deleted through the > UI(which also triggers a prefix cleanup on the s3 storage) > - update parameters for `DataStore::lookup_datastore()` > - ui: re-ordered actions, `move` now next to `verify` > - ui: add move to right-click context menu > - ui: show empty groups in the UI > - add cli commands for both ns and group moves > - add 2s ns lock timeout for worker tasks > > *note*: given the UI change to show empty groups it could make sense to > not auto-delete a group if the last snapshot is deleted. For this series > though that is not relevant since we just need empty groups to be > deletable through the UI for partially failed s3 moves > > Hannes Laimer (8): > ui: show empty groups > datastore: add move_group > datastore: add move_namespace > api: add PUT endpoint for move_group > api: add PUT endpoint for move_namespace > ui: add move group action > ui: add move namespace action > cli: add move-namespace and move-group commands > > pbs-datastore/src/backup_info.rs | 153 ++++++++- > pbs-datastore/src/datastore.rs | 335 +++++++++++++++++++- > src/api2/admin/datastore.rs | 78 ++++- > src/api2/admin/namespace.rs | 78 ++++- > src/bin/proxmox_backup_manager/datastore.rs | 84 ++++- > www/Makefile | 2 + > www/datastore/Content.js | 161 ++++++++-- > www/form/NamespaceSelector.js | 11 + > www/window/GroupMove.js | 56 ++++ > www/window/NamespaceMove.js | 79 +++++ > 10 files changed, 1003 insertions(+), 34 deletions(-) > create mode 100644 www/window/GroupMove.js > create mode 100644 www/window/NamespaceMove.js >