[libvirt] [PATCH v2 3/5] qemu_domain.c: moving maxCpu validation to qemuDomainDefValidate

Daniel Henrique Barboza danielhb413 at gmail.com
Thu Nov 15 21:42:47 UTC 2018



On 11/15/18 7:38 PM, John Ferlan wrote:
>
> On 11/14/18 2:52 PM, Daniel Henrique Barboza wrote:
>> Adding maxCpu validation in qemuDomainDefValidate allows the user to
>> spot over the board maxCpus counts at editing time, instead of
>> facing a runtime error when starting the domain. This check is also
>> arch independent.
>>
>> This leaves us with 2 calls to qemuProcessValidateCpuCount: one in
>> qemuProcessStartValidateXML and the new one at qemuDomainDefValidate.
>>
>> The call in qemuProcessStartValidateXML is redundant. Following
>> up in that code, there is a call to virDomainDefValidate, which
>> in turn will call config.domainValidateCallback. In this case, the
>> callback function is qemuDomainDefValidate. This means that, on startup
>> time, qemuProcessValidateCpuCount will be called twice.
>>
>> To avoid that, let's also remove the qemuProcessValidateCpuCount call
>> from qemuProcessStartValidateXML.
>>
>> Signed-off-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
>> ---
>>   src/qemu/qemu_domain.c  |  4 ++++
>>   src/qemu/qemu_process.c | 14 +-------------
>>   2 files changed, 5 insertions(+), 13 deletions(-)
>>
>> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
>> index 37926850b2..3b86d28216 100644
>> --- a/src/qemu/qemu_domain.c
>> +++ b/src/qemu/qemu_domain.c
>> @@ -4084,6 +4084,10 @@ qemuDomainDefValidate(const virDomainDef *def,
>>           }
>>       }
>>   
>> +    if (qemuProcessValidateCpuCount(def, qemuCaps) < 0) {
>> +        goto cleanup;
>> +    }
>> +
> make check would have told you to remove the { ... } for the one line
> goto cleanup;
>
> I'll take care of it for you (as well as the merge conflict it creates
> in the subsequent patch).
>
>

I appreciate it. I'll make sure to execute 'make check' before sending
the patch next time.


Thanks,


Daniel



>
> John
>
>>       if (ARCH_IS_X86(def->os.arch) &&
>>           virDomainDefGetVcpusMax(def) > QEMU_MAX_VCPUS_WITHOUT_EIM) {
>>           if (!qemuDomainIsQ35(def)) {
>> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
>> index 4d134bd7be..2adbf375ee 100644
>> --- a/src/qemu/qemu_process.c
>> +++ b/src/qemu/qemu_process.c
>> @@ -5140,21 +5140,9 @@ qemuProcessStartValidateDisks(virDomainObjPtr vm,
>>   static int
>>   qemuProcessStartValidateXML(virQEMUDriverPtr driver,
>>                               virDomainObjPtr vm,
>> -                            virQEMUCapsPtr qemuCaps,
>>                               virCapsPtr caps,
>>                               unsigned int flags)
>>   {
>> -    /* The bits we validate here are XML configs that we previously
>> -     * accepted. We reject them at VM startup time rather than parse
>> -     * time so that pre-existing VMs aren't rejected and dropped from
>> -     * the VM list when libvirt is updated.
>> -     *
>> -     * If back compat isn't a concern, XML validation should probably
>> -     * be done at parse time.
>> -     */
>> -    if (qemuProcessValidateCpuCount(vm->def, qemuCaps) < 0)
>> -        return -1;
>> -
>>       /* checks below should not be executed when starting a qemu process for a
>>        * VM that was running before (migration, snapshots, save). It's more
>>        * important to start such VM than keep the configuration clean */
>> @@ -5204,7 +5192,7 @@ qemuProcessStartValidate(virQEMUDriverPtr driver,
>>   
>>       }
>>   
>> -    if (qemuProcessStartValidateXML(driver, vm, qemuCaps, caps, flags) < 0)
>> +    if (qemuProcessStartValidateXML(driver, vm, caps, flags) < 0)
>>           return -1;
>>   
>>       if (qemuProcessStartValidateGraphics(vm) < 0)
>>




More information about the libvir-list mailing list