Signed-off-by: Pavel Hrdina <phrdina(a)redhat.com>
---
src/conf/domain_conf.c | 7 -------
src/qemu/qemu_driver.c | 29 ++++++++++++++++++++++-------
2 files changed, 22 insertions(+), 14 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index a70084658a..8b4e54d574 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -20241,13 +20241,6 @@ virDomainIOThreadIDAdd(virDomainDefPtr def,
virDomainIOThreadIDDefPtr iothrid = NULL;
int pos;
- if (virDomainIOThreadIDFind(def, iothread_id)) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("cannot duplicate iothread_id '%u' in
iothreadids"),
- iothread_id);
- return NULL;
- }
-
if (VIR_ALLOC(iothrid) < 0)
goto error;
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 1c3db4e13f..ce2f8ff8bd 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -5582,13 +5582,6 @@ qemuDomainHotplugAddIOThread(virQEMUDriverPtr driver,
qemuMonitorIOThreadInfoPtr *new_iothreads = NULL;
virDomainIOThreadIDDefPtr iothrid;
- if (virDomainIOThreadIDFind(vm->def, iothread_id)) {
- virReportError(VIR_ERR_INVALID_ARG,
- _("an IOThread is already using iothread_id
'%u'"),
- iothread_id);
- goto cleanup;
- }
-
if (virAsprintf(&alias, "iothread%u", iothread_id) < 0)
return -1;
@@ -5724,6 +5717,22 @@ qemuDomainHotplugDelIOThread(virQEMUDriverPtr driver,
goto cleanup;
}
+
+static int
+qemuDomainAddIOThreadCheck(virDomainDefPtr def,
+ unsigned int iothread_id)
+{
+ if (virDomainIOThreadIDFind(def, iothread_id)) {
+ virReportError(VIR_ERR_INVALID_ARG,
+ _("an IOThread is already using iothread_id
'%u'"),
+ iothread_id);
+ return -1;
+ }
+
+ return 0;
+}
+
+
static int
qemuDomainDelIOThreadCheck(virDomainDefPtr def,
unsigned int iothread_id)
@@ -5792,6 +5801,9 @@ qemuDomainChgIOThread(virQEMUDriverPtr driver,
}
if (add) {
+ if (qemuDomainAddIOThreadCheck(def, iothread_id) < 0)
+ goto endjob;
+
if (qemuDomainHotplugAddIOThread(driver, vm, iothread_id) < 0)
goto endjob;
} else {
@@ -5808,6 +5820,9 @@ qemuDomainChgIOThread(virQEMUDriverPtr driver,
if (persistentDef) {
if (add) {
+ if (qemuDomainAddIOThreadCheck(persistentDef, iothread_id) < 0)
+ goto endjob;
+
if (!virDomainIOThreadIDAdd(persistentDef, iothread_id))
goto endjob;
--
2.11.1