[libvirt] [PATCH v2 1/8] qemu_monitor: helper functions for CPU models
Collin Walling
walling at linux.ibm.com
Thu May 2 15:32:06 UTC 2019
On 4/29/19 10:08 AM, Daniel Henrique Barboza wrote:
>
>
> On 4/26/19 5:22 PM, walling at linux.ibm.com wrote:
>> From: Collin Walling<walling at linux.ibm.com>
>>
>> Refactor some code in qemuMonitorJSONGetCPUModelExpansion to be
>> later used for the comparison and baseline functions.
>>
>> This does not alter any functionality.
>>
>> Signed-off-by: Collin Walling<walling at linux.ibm.com>
>> Reviewed-by: Bjoern Walk<bwalk at linux.ibm.com>
>> ---
>> src/qemu/qemu_monitor_json.c | 170
>> ++++++++++++++++++++++++++++++-------------
>> 1 file changed, 118 insertions(+), 52 deletions(-)
>>
>> diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
>> index 908967f..9618d8e 100644
>> --- a/src/qemu/qemu_monitor_json.c
>> +++ b/src/qemu/qemu_monitor_json.c
>> @@ -5513,6 +5513,118 @@ qemuMonitorJSONParseCPUModelProperty(const
>> char *key,
>> return 0;
>> }
>> +
>> +static virJSONValuePtr
>> +qemuMonitorJSONMakeCPUModel(const char *model_name,
>> + size_t nprops,
>> + virCPUFeatureDefPtr props,
>> + bool migratable)
>> +{
>> + virJSONValuePtr value;
>> + virJSONValuePtr feats = NULL;
>> + size_t i;
>> +
>> + if (!(value = virJSONValueNewObject()))
>> + goto cleanup;
>> +
>> + if (virJSONValueObjectAppendString(value, "name", model_name) < 0)
>> + goto cleanup;
>> +
>> + if (nprops || !migratable) {
>> + if (!(feats = virJSONValueNewObject()))
>> + goto cleanup;
>> +
>> + for (i = 0; i < nprops; i++) {
>> + char *name = props[i].name;
>> + bool enabled = false;
>> +
>> + if (props[i].policy == VIR_CPU_FEATURE_REQUIRE ||
>> + props[i].policy == VIR_CPU_FEATURE_FORCE)
>> + enabled = true;
>> +
>> + if (virJSONValueObjectAppendBoolean(feats, name, enabled)
>> < 0)
>> + goto cleanup;
>> + }
>> +
>> + if (!migratable) {
>> + if (virJSONValueObjectAppendBoolean(feats, "migratable",
>> false) < 0)
>> + goto cleanup;
>
> Missing indentation of 'goto cleanup' after the if clause.
>
>
Good eye, thanks!
>> + }
>> +
>> + if (virJSONValueObjectAppend(value, "props", feats) < 0)
>> + goto cleanup;
>> + }
>> +
>> + return value;
>> +
>> + cleanup:
>> + virJSONValueFree(value);
>> + virJSONValueFree(feats);
>> + return NULL;
>> +}
>> +
[...]
>> -
>> - if (!(cpu_props = virJSONValueObjectGetObject(cpu_model,
>> "props"))) {
>> - virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>> - _("query-cpu-model-expansion reply data was
>> missing 'props'"));
>> - goto cleanup;
>> - }
>
> These error messages 'query-cpu-model-expansion reply data was
> missing ...' were replaced inside qemuMonitorJSONParseCPUModelData
> by error messages of the type 'QMP command reply data was missing ...'.
> I see that this was done because the function is used in later patches
> with different QMP commands, hence this change to a more generic
> error message. Which is fine.
>
> A suggestion here would be to pass an extra string 'qmp-command-name'
> to qemuMonitorJSONParseCPUModelData. Then these error messages
> can be tuned to show which QMP command failed to parse. This can be
> useful if this parse function is used multiple times with several QMP
> commands.
>
>
>
> Thanks,
>
> DHB
>
>
>
Fair enough. This is an easy change.
Thanks for all of the review!
[...]
More information about the libvir-list
mailing list