[pve-devel] [PATCH qemu-server 2/3] blockdev: attach/detach: silence errors for QMP commands for which failure may be expected

Fiona Ebner f.ebner at proxmox.com
Tue Aug 5 11:25:32 CEST 2025


Without passing 'noerr' to mon_cmd(), errors are logged to the system
journal. In attach() and detach(), there are two mon_cmd() calls that
are expected to fail in some scenarios for which the errors should not
be logged.

Reported-by: Friedrich Weber <f.weber at proxmox.com>
Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
---
 src/PVE/QemuServer/Blockdev.pm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/PVE/QemuServer/Blockdev.pm b/src/PVE/QemuServer/Blockdev.pm
index d0d7e684..04eeed3c 100644
--- a/src/PVE/QemuServer/Blockdev.pm
+++ b/src/PVE/QemuServer/Blockdev.pm
@@ -575,7 +575,7 @@ sub attach {
     eval {
         if ($throttle_group_id) {
             # Try to remove potential left-over.
-            eval { mon_cmd($vmid, 'object-del', id => $throttle_group_id); };
+            mon_cmd($vmid, 'object-del', id => $throttle_group_id, noerr => 1);
 
             my $throttle_group = generate_throttle_group($drive);
             mon_cmd($vmid, 'object-add', $throttle_group->%*);
@@ -630,8 +630,8 @@ sub detach {
     while ($node_name) {
         last if !$block_info->{$node_name}; # already gone
 
-        eval { mon_cmd($vmid, 'blockdev-del', 'node-name' => "$node_name"); };
-        if (my $err = $@) {
+        my $res = mon_cmd($vmid, 'blockdev-del', 'node-name' => "$node_name", noerr => 1);
+        if (my $err = $res->{error}) {
             last if $err =~ m/Failed to find node with node-name/; # already gone
             die "deleting blockdev '$node_name' failed : $err\n";
         }
-- 
2.47.2





More information about the pve-devel mailing list