mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
Fix usage of virDomainDefCompatibleDevice
A device needs to be checked for compatibility with the domain definition it corresponds to. Specifically, for VIR_DOMAIN_AFFECT_CONFIG case we should check against persistent def rather than active def. Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
cfa7ceab77
commit
6dc75f5654
@ -5025,13 +5025,14 @@ static int lxcDomainAttachDeviceFlags(virDomainPtr dom,
|
||||
}
|
||||
|
||||
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
|
||||
if (virDomainDefCompatibleDevice(vm->def, dev) < 0)
|
||||
goto cleanup;
|
||||
|
||||
/* Make a copy for updated domain. */
|
||||
vmdef = virDomainObjCopyPersistentDef(vm, caps, driver->xmlopt);
|
||||
if (!vmdef)
|
||||
goto cleanup;
|
||||
|
||||
if (virDomainDefCompatibleDevice(vmdef, dev) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if ((ret = lxcDomainAttachDeviceConfig(vmdef, dev)) < 0)
|
||||
goto cleanup;
|
||||
}
|
||||
@ -5151,13 +5152,14 @@ static int lxcDomainUpdateDeviceFlags(virDomainPtr dom,
|
||||
}
|
||||
|
||||
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
|
||||
if (virDomainDefCompatibleDevice(vm->def, dev) < 0)
|
||||
goto cleanup;
|
||||
|
||||
/* Make a copy for updated domain. */
|
||||
vmdef = virDomainObjCopyPersistentDef(vm, caps, driver->xmlopt);
|
||||
if (!vmdef)
|
||||
goto cleanup;
|
||||
|
||||
if (virDomainDefCompatibleDevice(vmdef, dev) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if ((ret = lxcDomainUpdateDeviceConfig(vmdef, dev)) < 0)
|
||||
goto cleanup;
|
||||
}
|
||||
@ -5261,14 +5263,14 @@ static int lxcDomainDetachDeviceFlags(virDomainPtr dom,
|
||||
}
|
||||
|
||||
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
|
||||
if (virDomainDefCompatibleDevice(vm->def, dev) < 0)
|
||||
goto cleanup;
|
||||
|
||||
/* Make a copy for updated domain. */
|
||||
vmdef = virDomainObjCopyPersistentDef(vm, caps, driver->xmlopt);
|
||||
if (!vmdef)
|
||||
goto cleanup;
|
||||
|
||||
if (virDomainDefCompatibleDevice(vmdef, dev) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if ((ret = lxcDomainDetachDeviceConfig(vmdef, dev)) < 0)
|
||||
goto cleanup;
|
||||
}
|
||||
|
@ -6972,13 +6972,14 @@ static int qemuDomainAttachDeviceFlags(virDomainPtr dom, const char *xml,
|
||||
goto cleanup;
|
||||
|
||||
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
|
||||
if (virDomainDefCompatibleDevice(vm->def, dev) < 0)
|
||||
goto endjob;
|
||||
|
||||
/* Make a copy for updated domain. */
|
||||
vmdef = virDomainObjCopyPersistentDef(vm, caps, driver->xmlopt);
|
||||
if (!vmdef)
|
||||
goto endjob;
|
||||
|
||||
if (virDomainDefCompatibleDevice(vmdef, dev) < 0)
|
||||
goto endjob;
|
||||
|
||||
if ((ret = qemuDomainAttachDeviceConfig(qemuCaps, vmdef, dev)) < 0)
|
||||
goto endjob;
|
||||
}
|
||||
@ -7115,14 +7116,14 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr dom,
|
||||
goto cleanup;
|
||||
|
||||
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
|
||||
if (virDomainDefCompatibleDevice(vm->def, dev) < 0)
|
||||
goto endjob;
|
||||
|
||||
/* Make a copy for updated domain. */
|
||||
vmdef = virDomainObjCopyPersistentDef(vm, caps, driver->xmlopt);
|
||||
if (!vmdef)
|
||||
goto endjob;
|
||||
|
||||
if (virDomainDefCompatibleDevice(vmdef, dev) < 0)
|
||||
goto endjob;
|
||||
|
||||
if ((ret = qemuDomainUpdateDeviceConfig(qemuCaps, vmdef, dev)) < 0)
|
||||
goto endjob;
|
||||
}
|
||||
@ -7254,13 +7255,14 @@ static int qemuDomainDetachDeviceFlags(virDomainPtr dom, const char *xml,
|
||||
goto cleanup;
|
||||
|
||||
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
|
||||
if (virDomainDefCompatibleDevice(vm->def, dev) < 0)
|
||||
goto endjob;
|
||||
|
||||
/* Make a copy for updated domain. */
|
||||
vmdef = virDomainObjCopyPersistentDef(vm, caps, driver->xmlopt);
|
||||
if (!vmdef)
|
||||
goto endjob;
|
||||
|
||||
if (virDomainDefCompatibleDevice(vmdef, dev) < 0)
|
||||
goto endjob;
|
||||
|
||||
if ((ret = qemuDomainDetachDeviceConfig(vmdef, dev)) < 0)
|
||||
goto endjob;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user