mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-20 06:50:22 +03:00
qemu: Fix update device for CURRENT + FORCE flags
When CURRENT and FORCE flags were used together, UpdateDeviceFlags did nothing because it failed to transform CURRENT into either LIVE or CONFIG.
This commit is contained in:
parent
ecfbf79541
commit
ad7b327690
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user