mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
qemu: delete exist bandwidth restrictions when they are removed from config
When the <bandwidth> of an interface is changed with update-device, the old settings are cleared with tc, then new settings added with tc. But if the <bandwidth has been removed, the old settings weren't being removed, so the bandwidth restrictions would still be active on the interface although the interface status in libvirt showed that they had been removed. This patch fixes it by calling virNetDevBandwidthClear() if the "modification" to the interface bandwidth was to completely clear it. An alternative could have been to modify virNetDevBandwidthSet() to always clear existing bandwith settings at the beginning of the function (currently it short circuits in that case, doing nothing), but that would have led to cases where virNetDevBandwidthClear() was now being called in cases where it previously wasn't, and while many of those cases would be NOPs, there could be cases where it would cause an error. The way this patch works, the ...Clear() function is only called in cases where the ...Set() function had previously been called successfully, so the risk of regression is minimized. Resolves: https://bugzilla.redhat.com/1454709
This commit is contained in:
parent
8d51042ef8
commit
b21163bd11
@ -3319,11 +3319,19 @@ qemuDomainChangeNet(virQEMUDriverPtr driver,
|
||||
}
|
||||
|
||||
if (needBandwidthSet) {
|
||||
if (virNetDevBandwidthSet(newdev->ifname,
|
||||
virDomainNetGetActualBandwidth(newdev),
|
||||
false,
|
||||
virNetDevBandwidthPtr newb = virDomainNetGetActualBandwidth(newdev);
|
||||
|
||||
if (newb) {
|
||||
if (virNetDevBandwidthSet(newdev->ifname, newb, false,
|
||||
!virDomainNetTypeSharesHostView(newdev)) < 0)
|
||||
goto cleanup;
|
||||
} else {
|
||||
/*
|
||||
* virNetDevBandwidthSet() doesn't clear any existing
|
||||
* setting unless something new is being set.
|
||||
*/
|
||||
virNetDevBandwidthClear(newdev->ifname);
|
||||
}
|
||||
needReplaceDevDef = true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user