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 71D1C1FF137 for ; Tue, 31 Mar 2026 14:33:46 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id A3A3E1BDF5; Tue, 31 Mar 2026 14:34:13 +0200 (CEST) From: Hannes Laimer To: pbs-devel@lists.proxmox.com Subject: [PATCH proxmox-backup v6 0/8] fixes #6195: add support for moving groups and namespaces Date: Tue, 31 Mar 2026 14:34:01 +0200 Message-ID: <20260331123409.198353-1-h.laimer@proxmox.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1774960394763 X-SPAM-LEVEL: Spam detection results: 0 AWL -1.417 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 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 1 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 1 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 1 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. 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: K3P6P7UYEHF2KSECD6E5H7WWLB3ADSEV X-Message-ID-Hash: K3P6P7UYEHF2KSECD6E5H7WWLB3ADSEV 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: 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 -- 2.47.3