[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:18:13 UTC 2015


On 01/09/2015 02:15 PM, Daniel P. Berrange wrote:
> On Fri, Jan 09, 2015 at 02:08:06PM +0100, Pavel Hrdina wrote:
>> 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?
>
> We should silently skip this when json isn't available. That code path
> will only happen on very old QEMU, which presumably won't suffer from
> the bug you're trying to fix here.
>
> Regards,
> Daniel
>

OK, thanks for review. I'll send v3.

Pavel




More information about the libvir-list mailing list