[libvirt] [PATCH v1 08/11] network: Update status file on (un)plug

Michal Privoznik mprivozn at redhat.com
Mon Nov 19 16:51:48 UTC 2012


Status file keeps track of class_id and floor_sum. It's better
to keep it updated in case libvirtd is killed.
---
 src/network/bridge_driver.c |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 8dc9d19..5a0f43f 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -4300,6 +4300,15 @@ networkNotifyPlug(virNetworkPtr network,
     net->class_id++;
     /* update sum of 'floor'-s of attached NICs */
     net->floor_sum += iface->bandwidth->in->floor;
+    /* update status file */
+    if (virNetworkSaveStatus(NETWORK_STATE_DIR, net) < 0) {
+        net->class_id--;
+        net->floor_sum -= iface->bandwidth->in->floor;
+        iface->class_id = 0;
+        ignore_value(virNetDevBandwidthUnplug(net->def->bridge,
+                                              net->class_id));
+        goto cleanup;
+    }
     /* update rate for non guaranteed NICs */
     new_rate -= net->floor_sum;
     if (virNetDevBandwidthUpdateRate(net->def->bridge, "1:2",
@@ -4339,6 +4348,11 @@ networkNotifyUnplug(virDomainNetDefPtr iface)
             goto cleanup;
         /* update sum of 'floor'-s of attached NICs */
         net->floor_sum -= iface->bandwidth->in->floor;
+        /* update status file */
+        if (virNetworkSaveStatus(NETWORK_STATE_DIR, net) < 0) {
+            net->floor_sum += iface->bandwidth->in->floor;
+            goto cleanup;
+        }
         /* update rate for non guaranteed NICs */
         new_rate -= net->floor_sum;
         if (virNetDevBandwidthUpdateRate(net->def->bridge, "1:2",
-- 
1.7.8.6




More information about the libvir-list mailing list