[libvirt] qemu: directly create virResctrlInfo ignoring capabilities

Daniel P. Berrangé berrange at redhat.com
Tue Dec 10 10:28:07 UTC 2019


On Tue, Dec 10, 2019 at 03:27:06PM +0800, Wang Huaqiang wrote:
> This patch introduced a bug and broke the 'resctrl' feature.
> 
> It introduced a 'divide by zero' error if you defined any 'resctrl'
> 
> allocation group through <cputune/cachetune/cache>.
> 
> 
> Reason is 'caps->resctrl' is fully initialized through two steps,
> 'virResctrlInfoNew'
> 
> invokes 'virResctrlGetInfo' completes the first step, later,
> 'virResctrlInfoGetCache'
> 
> accomplishes the filling of
> 'caps->resctrl->levels->types->control.granularity'.

Urgh, that is really horribly misleading API. An object getter
method should not be making changes to the object.

virResctrlInfoGetCache needs splitting into two methods - one
setter which updates the control granularity,  and then make
this getter into something with no side-effects.

> The simplest way to fix the bug is drawback this patch, but still have the
> undesirable overhead.

I've posted the simple revert for now, since refactoring the code is
a bigger job.



Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list