[libvirt] [PATCH] qemu: Fix update device for CURRENT + FORCE flags

Michal Privoznik mprivozn at redhat.com
Tue Jun 28 09:50:00 UTC 2011


On 27.06.2011 11:27, Jiri Denemark wrote:
> When CURRENT and FORCE flags were used together, UpdateDeviceFlags did
> nothing because it failed to transform CURRENT into either LIVE or
> CONFIG.
> ---
>  src/qemu/qemu_driver.c |    7 +++++--
>  1 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index da612e7..8596b30 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -4789,12 +4789,15 @@ qemuDomainModifyDeviceFlags(virDomainPtr dom, const char *xml,
>      virDomainDeviceDefPtr dev = NULL;
>      bool force = (flags & VIR_DOMAIN_DEVICE_MODIFY_FORCE) != 0;
>      int ret = -1;
> +    unsigned int affect;
>  
>      virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
>                    VIR_DOMAIN_AFFECT_CONFIG |
>                    (action == QEMU_DEVICE_UPDATE ?
>                     VIR_DOMAIN_DEVICE_MODIFY_FORCE : 0), -1);
>  
> +    affect = flags & (VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG);
> +
>      qemuDriverLock(driver);
>      vm = virDomainFindByUUID(&driver->domains, dom->uuid);
>      if (!vm) {
> @@ -4809,10 +4812,10 @@ qemuDomainModifyDeviceFlags(virDomainPtr dom, const char *xml,
>          goto cleanup;
>  
>      if (virDomainObjIsActive(vm)) {
> -        if (flags == VIR_DOMAIN_AFFECT_CURRENT)
> +        if (affect == VIR_DOMAIN_AFFECT_CURRENT)
>              flags |= VIR_DOMAIN_AFFECT_LIVE;
>      } else {
> -        if (flags == VIR_DOMAIN_AFFECT_CURRENT)
> +        if (affect == VIR_DOMAIN_AFFECT_CURRENT)
>              flags |= VIR_DOMAIN_AFFECT_CONFIG;
>          /* check consistency between flags and the vm state */
>          if (flags & VIR_DOMAIN_AFFECT_LIVE) {

ACK. Things works again with this patch.

Michal




More information about the libvir-list mailing list