[libvirt] [PATCH 2/3] qemu: mark user defined websocket as used

Nikolay Shirokovskiy nshirokovskiy at virtuozzo.com
Fri Dec 9 13:15:01 UTC 2016



On 09.12.2016 15:57, John Ferlan wrote:
> 
> 
> On 12/09/2016 01:51 AM, Nikolay Shirokovskiy wrote:
>>
>>
>> On 08.12.2016 23:07, John Ferlan wrote:
>>>
>>>
>>> On 11/22/2016 06:09 AM, Nikolay Shirokovskiy wrote:
>>>> We need extra state variable to distinguish between autogenerated
>>>> and user defined cases after auto generation is done.
>>>> ---
>>>>  src/conf/domain_conf.h  |  1 +
>>>>  src/qemu/qemu_process.c | 19 +++++++++++++++++--
>>>>  2 files changed, 18 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
>>>> index 541b600..9bc4522 100644
>>>> --- a/src/conf/domain_conf.h
>>>> +++ b/src/conf/domain_conf.h
>>>> @@ -1468,6 +1468,7 @@ struct _virDomainGraphicsDef {
>>>>              int port;
>>>>              bool portReserved;
>>>>              int websocket;
>>>> +            bool websocketGenerated;
>>>>              bool autoport;
>>>>              char *keymap;
>>>>              virDomainGraphicsAuthDef auth;
>>>> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
>>>> index 6aaaa10..1799f33 100644
>>>> --- a/src/qemu/qemu_process.c
>>>> +++ b/src/qemu/qemu_process.c
>>>> @@ -3574,6 +3574,7 @@ qemuProcessVNCAllocatePorts(virQEMUDriverPtr driver,
>>>>          if (virPortAllocatorAcquire(driver->webSocketPorts, &port) < 0)
>>>>              return -1;
>>>>          graphics->data.vnc.websocket = port;
>>>> +        graphics->data.vnc.websocketGenerated = true;
>>>>      }
>>>>  
>>>>      return 0;
>>>> @@ -4065,6 +4066,12 @@ qemuProcessGraphicsReservePorts(virQEMUDriverPtr driver,
>>>>                  return -1;
>>>>              graphics->data.vnc.portReserved = true;
>>>>          }
>>>> +        if (graphics->data.vnc.websocket != -1 &&   /* auto websocket */
>>>> +            graphics->data.vnc.websocket &&         /* no websocket */
>>>> +            virPortAllocatorSetUsed(driver->remotePorts,
>>>> +                                    graphics->data.vnc.websocket,
>>>> +                                    true) < 0)
>>>> +            return -1;
>>>>          break;
>>>>  
>>>>      case VIR_DOMAIN_GRAPHICS_TYPE_SPICE:
>>>> @@ -6189,8 +6196,16 @@ void qemuProcessStop(virQEMUDriverPtr driver,
>>>>                                          false);
>>>>                  graphics->data.vnc.portReserved = false;
>>>>              }
>>>> -            virPortAllocatorRelease(driver->webSocketPorts,
>>>> -                                    graphics->data.vnc.websocket);
>>>> +            if (graphics->data.vnc.websocketGenerated) {
>>>> +                virPortAllocatorRelease(driver->webSocketPorts,
>>>> +                                        graphics->data.vnc.websocket);
>>>> +                graphics->data.vnc.websocketGenerated = false;
>>>> +                graphics->data.vnc.websocket = -1;
>>>
>>> One more question... Should this be 0 instead of -1?
>>>
>>> We set to -1 during Reserve and set the Generated flag indicating that
>>> the user didn't set to -1, but we did.
>>
>> Not quite. -1 is valid user input. Reserve does not change websocket value.
>>
> 
> Oh right - I think I was crossing thoughts and thinking setting to -1
> was internally done...
> 
> The series is now pushed
> 
> Tks,
> 
> John

Thankx!




More information about the libvir-list mailing list