a41c76
From f4c935bfa5bd3e4f4856dfdf660be0fa50d42798 Mon Sep 17 00:00:00 2001
a41c76
Message-Id: <f4c935bfa5bd3e4f4856dfdf660be0fa50d42798@dist-git>
a41c76
From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com>
a41c76
Date: Mon, 10 Feb 2020 17:05:54 +0100
a41c76
Subject: [PATCH] qemu: preserve error on bandwidth rollback
a41c76
MIME-Version: 1.0
a41c76
Content-Type: text/plain; charset=UTF-8
a41c76
Content-Transfer-Encoding: 8bit
a41c76
a41c76
We call APIs that reset the error in the rollback code.
a41c76
Preserve the error from the original call that failed.
a41c76
a41c76
This turns the boringly cryptic:
a41c76
  error: Unable to set interface parameters
a41c76
  error: An error occurred, but the cause is unknown
a41c76
to the unexpectedly anarchist:
a41c76
  error: internal error: Child process (/usr/sbin/tc filter add
a41c76
  dev vnet1 parent ffff: protocol all u32 match u32 0 0 police
a41c76
  rate 4294968kbps burst 4294968kb mtu 64kb drop flowid :1)
a41c76
  unexpected exit status 1: Illegal "rate"
a41c76
  Illegal "police"
a41c76
a41c76
Signed-off-by: Ján Tomko <jtomko@redhat.com>
a41c76
Fixes: f02e21cb3379a41cd42f2d8116f2d10dabace83b
a41c76
https://bugzilla.redhat.com/show_bug.cgi?id=1800505
a41c76
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
a41c76
(cherry picked from commit 457b0e74888f61b759e334d91479c258663835d5)
a41c76
Signed-off-by: Ján Tomko <jtomko@redhat.com>
a41c76
Message-Id: <a49ef696966d8b8ca28d298ffab16c3a77b1102a.1581350626.git.jtomko@redhat.com>
a41c76
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
a41c76
---
a41c76
 src/qemu/qemu_driver.c | 4 ++++
a41c76
 1 file changed, 4 insertions(+)
a41c76
a41c76
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
a41c76
index 08f492fa24..af81c4a6e4 100644
a41c76
--- a/src/qemu/qemu_driver.c
a41c76
+++ b/src/qemu/qemu_driver.c
a41c76
@@ -11642,6 +11642,9 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
a41c76
 
a41c76
         if (virNetDevBandwidthSet(net->ifname, newBandwidth, false,
a41c76
                                   !virDomainNetTypeSharesHostView(net)) < 0) {
a41c76
+            virErrorPtr orig_err;
a41c76
+
a41c76
+            virErrorPreserveLast(&orig_err);
a41c76
             ignore_value(virNetDevBandwidthSet(net->ifname,
a41c76
                                                net->bandwidth,
a41c76
                                                false,
a41c76
@@ -11650,6 +11653,7 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
a41c76
                 ignore_value(virDomainNetBandwidthUpdate(net,
a41c76
                                                          net->bandwidth));
a41c76
             }
a41c76
+            virErrorRestore(&orig_err);
a41c76
             goto endjob;
a41c76
         }
a41c76
 
a41c76
-- 
a41c76
2.25.0
a41c76