[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