[libvirt] [PATCH v2 03/25] qemu: Move <memballoon> validation out of qemu_command.c

Cole Robinson crobinso at redhat.com
Thu Jan 24 23:23:54 UTC 2019


On 01/24/2019 10:46 AM, Andrea Bolognani wrote:
> On Wed, 2019-01-23 at 16:32 -0500, Cole Robinson wrote:
> [...]
>> +static int
>> +qemuDomainDeviceDefValidateMemballoon(const virDomainMemballoonDef *memballoon,
> 
> You could pass
> 
>   const virDomainDef *def
> 
> too here, as most other qemuDomainDeviceDefValidate*() functions
> already do: that would allow you to...
> 
>> +                                      virQEMUCapsPtr qemuCaps)
>> +{
>> +    if (!memballoon ||
>> +        memballoon->model == VIR_DOMAIN_MEMBALLOON_MODEL_NONE) {
>> +        return 0;
>> +    }
> 
> ... replace this with
> 
>   if (!virDomainDefHasMemballoon(def))
>       return 0;
> 
> which is arguably slightly nicer. But this version works perfectly
> fine, so it's entirely up to you whether to do that or not.
> 

I agree that would be nicer, but I dug a bit deeper: This code path is
triggered in two major different ways: as a part of validating a full
DomainDef, but also for validating an _individual_ device which hasn't
been added to a DomainDef yet. The latter path is via
virDomainDeviceDefParse which is called in hotplug situations. So to be
completely correct this function can't validate against def->memballoon
because it may not have been set yet.

> [...]
>> @@ -2463,11 +2462,10 @@ static int qemuDomainSetMemoryStatsPeriod(virDomainPtr dom, int period,
>>      }
>>  
>>      if (persistentDef) {
>> -        if (!persistentDef->memballoon ||
>> -            persistentDef->memballoon->model != VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO) {
>> +        if (!virDomainDefHasMemballoon(def)) {
> 
> s/def/persistentDef/
> 
> With this fixed,
> 



>   Reviewed-by: Andrea Bolognani <abologna at redhat.com>
> 

Nice catch

Thanks,
Cole




More information about the libvir-list mailing list