tc doesn't support vif quota values bigger than 32 bits unsigned
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
In Progress
|
Wishlist
|
Unassigned |
Bug Description
tc doesn't support vif quota values bigger than 32 bits unsigned. libvirt appends "kb" to the vif quota sizes which will definitely , in some cases, go above the 4294967295 if the customer is specifying a somehwat reasonable value such as this:
quota:vif_
quota:vif_
quota:vif_
quota:vif_
quota:vif_
quota:vif_
In this case, the burst size is 15000000 * 1024 = 15360000000 which is above 4294967295. The following value makes libvirt fail with this undecipherable error message:
[root@underclou
Illegal "buffer"
Usage: ... qdisc add ... htb [default N] [r2q N]
.
We have about 3 ways to fix this:
1) fix "tc" to not fail if a value is invalid
2) fix libvirtd to remove the "kb"
3) fix nova_compute to fail with an error message or lower the value.
Changed in nova: | |
status: | New → In Progress |
technically these flavor extra specs are ment to be hypervisor independent and we in generall should not enforce limits based on any one implementaiton such as tc.
with that said uint32_max is proably an ok limit to enforce in the general case.
the correct way to enforece this in nova is via the flavor extra spec json schema validations
in addtion to that a second check should be implemented when assigning to nova config object in the libvirt driver that model the xml elements.
we should fail the boot of the server in this case setting it to error and stating that the flavor extra specs exceed the maxium allowable value.
we should also likely update the documentaiton for the extra specs to not that for the libvirt driver the values should be specifed in KB not bytes