From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id EC1371FF09D for ; Sun, 01 Nov 2026 23:59:22 +0100 (CET) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 7E5DC21686; Sun, 01 Nov 2026 23:59:13 +0100 (CET) From: Thomas Lamprecht To: pve-devel@lists.proxmox.com Subject: [PATCH cluster 01/19] datacenter config: add backup concurrency setting Date: Sun, 1 Nov 2026 23:58:28 +0100 Message-ID: <20261101225849.884587-2-t.lamprecht@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20261101225849.884587-1-t.lamprecht@proxmox.com> References: <20261101225849.884587-1-t.lamprecht@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1793573947867 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.404 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust 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: E7FPCAPLOFPENQ6LN5TJ4A4XOL4EXBSA X-Message-ID-Hash: E7FPCAPLOFPENQ6LN5TJ4A4XOL4EXBSA X-MailFrom: t.lamprecht@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 VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Allows configuring how many guests a node backs up at the same time, as default for all nodes. The node configuration can override it, and a backup job can only lower it. The setting is a property string with the per-node limit as default key, so further limits fit in without changing its type. Signed-off-by: Thomas Lamprecht --- src/PVE/DataCenterConfig.pm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/PVE/DataCenterConfig.pm b/src/PVE/DataCenterConfig.pm index 004122e..baff829 100644 --- a/src/PVE/DataCenterConfig.pm +++ b/src/PVE/DataCenterConfig.pm @@ -219,6 +219,18 @@ my $next_id_format = { }, }; +my $backup_concurrency_format = { + node => { + type => 'integer', + description => "Maximal number of guests backed up at the same time on each node," + . " unless the node configuration overrides it.", + minimum => 1, + default => 1, + default_key => 1, + optional => 1, + }, +}; + my $u2f_format = { appid => { type => 'string', @@ -427,6 +439,12 @@ my $datacenter_schema = { format => $replication_format, description => "For cluster wide replication settings.", }, + 'backup-concurrency' => { + optional => 1, + type => 'string', + format => $backup_concurrency_format, + description => "Limits for backing up guests at the same time.", + }, console => { optional => 1, type => 'string', @@ -599,6 +617,11 @@ sub parse_datacenter_config { $res->{'next-id'} = parse_property_string($next_id_format, $next_id); } + if (my $backup_concurrency = $res->{'backup-concurrency'}) { + $res->{'backup-concurrency'} = + parse_property_string($backup_concurrency_format, $backup_concurrency); + } + if (my $ha = $res->{ha}) { $res->{ha} = parse_property_string($ha_format, $ha); } @@ -692,6 +715,11 @@ sub write_datacenter_config { $cfg->{'next-id'} = PVE::JSONSchema::print_property_string($next_id, $next_id_format); } + if (ref(my $backup_concurrency = $cfg->{'backup-concurrency'})) { + $cfg->{'backup-concurrency'} = + PVE::JSONSchema::print_property_string($backup_concurrency, $backup_concurrency_format); + } + if (ref(my $ha = $cfg->{ha})) { $cfg->{ha} = PVE::JSONSchema::print_property_string($ha, $ha_format); } -- 2.47.3