From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [IPv6:2a0f:8001:1:32::40]) by lore.proxmox.com (Postfix) with ESMTPS id 5CE3B1FF0B7 for ; Tue, 25 Aug 2026 11:19:17 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 852DB217DB; Tue, 25 Aug 2026 11:18:10 +0200 (CEST) From: Christian Ebner To: pbs-devel@lists.proxmox.com, pve-devel@lists.proxmox.com Subject: [PATCH many 0/8] fix #7530: Implement download bandwidth and restore limits for pbs-restore Date: Tue, 25 Aug 2026 11:17:32 +0200 Message-ID: <20260825091741.162883-1-c.ebner@proxmox.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1787649450832 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.721 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: RL3M6TQQVJ7LJXNKAY3FQZGHIYKIVRSU X-Message-ID-Hash: RL3M6TQQVJ7LJXNKAY3FQZGHIYKIVRSU X-MailFrom: c.ebner@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: This patch series implements rate limiting functionality for restores using pbs-restore. In particular it exposes optional `bwlimit` and `rate-limit` flags, the former to impose download bandwidth limits, the latter to impose limits on the output data stream, taking into account zero size chunks and data after decompression. The output rate limit is further used to enforce the limit when performing restores via the qemu-server stack, so it is imposed also when the restore is performed via qmrestore and the PVE UI. For proxmox-backup-qemu some cleanups and dependencies are bumped as part of the series as well in order to keep it up-to-date and compile it cleanly with the latest version available of the proxmox-backup submodule. Required build order is: - pbs-api-types - proxmox-backup-qemu - pve-qemu - qemu-server Link to the bugtracker issue: https://bugzilla.proxmox.com/show_bug.cgi?id=7530 proxmox: Christian Ebner (1): pbs-api-types: expose ClientRateLimitConfig fields as pub pbs-api-types/src/traffic_control.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) proxmox-backup-qemu: Christian Ebner (5): restore: fix useless borrow clippy warnings for archive names commands: fix clippy error for reimplementing Result::ok() submodules: bump proxmox-backup submodule to 4.2.5 and fix api changes restore: implement `bw-limit` parameter imposing download rate limits restore: implement `rate-limit` imposing chunk data stream limits Cargo.toml | 4 ++- current-api.h | 14 +++++++++ src/backup.rs | 6 ++-- src/commands.rs | 26 +++++----------- src/lib.rs | 63 +++++++++++++++++++++++++++++++++++++-- src/restore.rs | 44 ++++++++++++++++++++------- submodules/proxmox-backup | 2 +- 7 files changed, 125 insertions(+), 34 deletions(-) pve-qemu: Christian Ebner (1): fix #7530: pbs-restore: expose optional rate limit parameters ...se-optional-parameters-imposing-band.patch | 78 +++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 79 insertions(+) create mode 100644 debian/patches/pve/0048-pbs-restore-expose-optional-parameters-imposing-band.patch qemu-server: Christian Ebner (1): pbs-restore: set restore bandwidth limit for volumes debian/control | 2 +- src/PVE/QemuServer.pm | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) Summary over all repositories: 12 files changed, 210 insertions(+), 37 deletions(-) -- Generated by murpp 0.11.0