[libvirt] [PATCH v2 2/2] qemu_process: detect updated video ram size values from QEMU

Pavel Hrdina phrdina at redhat.com
Fri Jan 9 13:08:06 UTC 2015


On 01/09/2015 10:51 AM, Daniel P. Berrange wrote:
> On Fri, Jan 09, 2015 at 10:02:07AM +0100, Pavel Hrdina wrote:
>> QEMU internally updates the size of video memory if the domain XML had
>> provided too low memory size or there are some dependencies for a QXL
>> devices 'vgamem' and 'ram' size. We need to know about the changes and
>> store them into the status XML to not break migration or managedsave
>> through different libvirt versions.
>>
>> Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
>> ---
>>   src/qemu/qemu_monitor.c      | 38 ++++++++++++++++++++++++
>>   src/qemu/qemu_monitor.h      |  4 +++
>>   src/qemu/qemu_monitor_json.c | 69 ++++++++++++++++++++++++++++++++++++++++++
>>   src/qemu/qemu_monitor_json.h |  3 ++
>>   src/qemu/qemu_process.c      | 71 ++++++++++++++++++++++++++++++++++++++++++++
>>   5 files changed, 185 insertions(+)
>>
>> diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
>> index 55f07f3..45bb62f 100644
>> --- a/src/qemu/qemu_monitor.c
>> +++ b/src/qemu/qemu_monitor.c
>> @@ -1154,6 +1154,44 @@ qemuMonitorFindBalloonObjectPath(qemuMonitorPtr mon,
>>       return ret;
>>   }
>>
>> +
>> +/**
>> + * To update video memory size in status XML we need to load correct values from
>> + * QEMU.  This is supported only with JSON monitor.
>> + *
>> + * Returns 0 on success, -1 on failure and sets proper error message.
>> + */
>> +int
>> +qemuMonitorUpdateVideoMemorySize(qemuMonitorPtr mon,
>> +                                 virDomainVideoDefPtr video,
>> +                                 const char *videoName)
>> +{
>> +    int ret = -1;
>> +    char *path = NULL;
>> +
>> +    if (mon->json) {
>> +        if (qemuMonitorFindObjectPath(mon, "/", videoName, &path) < 0) {
>> +            virReportError(VIR_ERR_INTERNAL_ERROR,
>> +                           _("Failed to find QOM Object path for device '%s'"),
>> +                           videoName);
>> +            return -1;
>> +        }
>> +        if (qemuMonitorJSONUpdateVideoMemorySize(mon, video, path) < 0)
>> +            goto cleanup;
>> +    } else {
>> +        virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
>> +                       _("JSON monitor is required"));
>> +        return -1;
>> +    }
>
> This fatal error is going to break all guest startup with non-json
> monitor IIUC.
>
> Regards,
> Daniel
>

Yes I know that. Should we return 0 and still reporting that error or 
should we just skip it at all if we cannot use mon-json?

Pavel




More information about the libvir-list mailing list