[libvirt] [PATCH v2 17/17] qemu: assume various QEMU 0.10 features are always available

John Ferlan jferlan at redhat.com
Tue Nov 10 11:50:43 UTC 2015



On 11/10/2015 06:43 AM, Daniel P. Berrange wrote:
> On Tue, Nov 10, 2015 at 06:22:32AM -0500, John Ferlan wrote:
>>
>>
>> On 11/10/2015 05:31 AM, Daniel P. Berrange wrote:
>>> On Mon, Nov 09, 2015 at 06:28:03PM -0500, John Ferlan wrote:
>>>>
>>>>
>>>> On 11/09/2015 11:24 AM, Daniel P. Berrange wrote:
>>>>> The -sdl and -net ...name=XXX arguments were both introduced
>>>>> in QEMU 0.10, so the QEMU driver can assume they are always
>>>>> available.
>>>>>
>>>>
>>>> The -sdl wasn't really removed it seems - although it did me peeking
>>>> into the rabbit hole for a make check failure...
>>>
>>>> After a bit of debugging - qemuParseCommandLine has the following:
>>>>
>>>>        } else if (STRPREFIX(arg, "-hd") ||
>>>>                    STRPREFIX(arg, "-sd") ||
>>>>                    STRPREFIX(arg, "-fd") ||
>>>>                    STREQ(arg, "-cdrom")) {
>>>>             WANT_VALUE();
>>>>
>>>> If I add:
>>>>
>>>>         } else if (STREQ(arg, "-sdl")) {
>>>>             /* Ignore */
>>>>
>>>> Just before that, then things are happy again.
>>>
>>> Rather than ignoring it, I added this:
>>>
>>>             virDomainGraphicsDefPtr sdl;
>>>             if (VIR_ALLOC(sdl) < 0)
>>>                 goto error;
>>>             sdl->type = VIR_DOMAIN_GRAPHICS_TYPE_SDL;
>>>
>>
>> This seems to duplicate an allocation later :
>>
>> 	    if (!nographics && def->ngraphics == 0) {
> 
> That deals with case where QEMU would previously default to SDL if
> no args are listed. If you specified '-vnc blah -sdl' it would not
> trigger though, so we need to improve that.
> 
>> It's also not FREE'd or appended to def->graphics
> 
> Sigh, so how about this instead, so we just explicitly trigger
> the existing SDL codepath:
> 

Seems fine to me...

ACK

John
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index c016d43..792ada3 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -12759,6 +12759,7 @@ qemuParseCommandLine(virCapsPtr qemuCaps,
>      qemuDomainCmdlineDefPtr cmd = NULL;
>      virDomainDiskDefPtr disk = NULL;
>      const char *ceph_args = qemuFindEnv(progenv, "CEPH_ARGS");
> +    bool have_sdl = false;
>  
>      if (pidfile)
>          *pidfile = NULL;
> @@ -12982,10 +12983,7 @@ qemuParseCommandLine(virCapsPtr qemuCaps,
>                  goto error;
>              }
>          } else if (STREQ(arg, "-sdl")) {
> -            virDomainGraphicsDefPtr sdl;
> -            if (VIR_ALLOC(sdl) < 0)
> -                goto error;
> -            sdl->type = VIR_DOMAIN_GRAPHICS_TYPE_SDL;
> +            have_sdl = true;
>          } else if (STREQ(arg, "-m")) {
>              int mem;
>              WANT_VALUE();
> @@ -13672,7 +13670,7 @@ qemuParseCommandLine(virCapsPtr qemuCaps,
>          VIR_FREE(capsdata);
>      }
>  
> -    if (!nographics && def->ngraphics == 0) {
> +    if (!nographics && (def->ngraphics == 0 || have_sdl)) {
>          virDomainGraphicsDefPtr sdl;
>          const char *display = qemuFindEnv(progenv, "DISPLAY");
>          const char *xauth = qemuFindEnv(progenv, "XAUTHORITY");
> 
> 
> Regards,
> Daniel
> 




More information about the libvir-list mailing list