[libvirt] [PATCH v2] qemuDomainUndefineFlags: Fix error message
by Michal Privoznik
https://bugzilla.redhat.com/show_bug.cgi?id=1522706
If domain is active, but the undefine API was called without the
VIR_DOMAIN_UNDEFINE_KEEP_NVRAM flag set, the following incorrect
error message is produced:
error: Requested operation is not valid: cannot delete inactive domain with nvram
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
Diff to v1:
- switched to different code pattern to make it easier for translators
src/qemu/qemu_driver.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index aa30b119a..cc5520c54 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -7537,8 +7537,13 @@ qemuDomainUndefineFlags(virDomainPtr dom,
goto endjob;
}
} else if (!(flags & VIR_DOMAIN_UNDEFINE_KEEP_NVRAM)) {
- virReportError(VIR_ERR_OPERATION_INVALID, "%s",
- _("cannot delete inactive domain with nvram"));
+ if (virDomainObjIsActive(vm)) {
+ virReportError(VIR_ERR_OPERATION_INVALID, "%s",
+ _("cannot delete active domain with nvram"));
+ } else {
+ virReportError(VIR_ERR_OPERATION_INVALID, "%s",
+ _("cannot delete inactive domain with nvram"));
+ }
goto endjob;
}
}
--
2.13.6
6 years, 11 months
[libvirt] [libvirt-php][PATCH 0/5] Couple of fixes
by Michal Privoznik
Mostly memleaks.
Michal Privoznik (5):
maint: Drop INSTALL install-sh and missing
src: Don't leak @uuid in libvirt_nwfilter_get_uuid_string
src: Fix a typo in php_libvirt_nwfilter_dtor
src: Free @filters array in libvirt_list_all_nwfilters
src: Don't leak connection_get_emulator retval
INSTALL | 370 ----------------------------------
install-sh | 501 -----------------------------------------------
missing | 215 --------------------
src/libvirt-connection.c | 2 +
src/libvirt-nwfilter.c | 7 +-
src/libvirt-php.c | 11 +-
6 files changed, 14 insertions(+), 1092 deletions(-)
delete mode 100644 INSTALL
delete mode 100755 install-sh
delete mode 100755 missing
--
2.13.6
6 years, 11 months
[libvirt] [PATCH] qemuDomainUndefineFlags: Fix error message
by Michal Privoznik
https://bugzilla.redhat.com/show_bug.cgi?id=1522706
If domain is active, but the undefine API was called without the
VIR_DOMAIN_UNDEFINE_KEEP_NVRAM flag set, the following incorrect
error message is produced:
error: Requested operation is not valid: cannot delete inactive domain with nvram
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/qemu/qemu_driver.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index aa30b119a..f2e8f3edc 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -7537,8 +7537,10 @@ qemuDomainUndefineFlags(virDomainPtr dom,
goto endjob;
}
} else if (!(flags & VIR_DOMAIN_UNDEFINE_KEEP_NVRAM)) {
- virReportError(VIR_ERR_OPERATION_INVALID, "%s",
- _("cannot delete inactive domain with nvram"));
+ virReportError(VIR_ERR_OPERATION_INVALID,
+ _("cannot delete %s domain with nvram"),
+ virDomainObjIsActive(vm) ?
+ _("active") : _("inactive"));
goto endjob;
}
}
--
2.13.6
6 years, 11 months
[libvirt] [PATCH v3 00/12] Move qemu command line controller checks to qemuDomainDeviceDefValidateController* checks
by John Ferlan
v2:
https://www.redhat.com/archives/libvir-list/2017-December/msg00173.html
Changes since v2:
* Push a few patches from v1 that were ACK'd
* Make the Skip helper private to qemu_command.c and just copied
the various skip checks from the new helper into the specific
controller validate helper to make it painfully obvious what
was being skipped rather than having common code handle that
and possibly obsfuscate those details from the casual reader.
John Ferlan (11):
qemu: Introduce qemuBuildSkipController
qemu: Introduce qemuDomainDeviceDefValidateController
qemu: Move CCW S390 Address check to controller def validate
qemu: Introduce qemuDomainDeviceDefValidateControllerSCSI
qemu: Introduce qemuDomainDeviceDefValidateControllerPCI
qemu: Use virDomainPCIControllerOpts in qemuBuildControllerDevStr
qemu: Move PCI command modelName check to controller def validate
qemu: Move PCI command modelName TypeToString to controller def
validate
qemu: Move PCI more command checks to controller def validate
qemu: Complete PCI command checks to controller def validate
qemu: Introduce qemuDomainDeviceDefValidateControllerSATA
Lin Ma (1):
qemu: Introduce qemuDomainDeviceDefValidateControllerIDE
src/qemu/qemu_command.c | 497 ++++++++----------------------------------------
src/qemu/qemu_domain.c | 469 ++++++++++++++++++++++++++++++++++++++++++++-
tests/qemumemlocktest.c | 14 ++
tests/qemuxml2xmltest.c | 5 +-
4 files changed, 564 insertions(+), 421 deletions(-)
--
2.13.6
6 years, 11 months
[libvirt] [PATCH] migration.html: Clarify configuration file handling docs
by Jiri Denemark
Migration never removes any configuration files on the destination host.
Thus when the domain is already defined on the destination, it will stay
persistent even after migration without --persist.
https://bugzilla.redhat.com/show_bug.cgi?id=1514930
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
docs/migration.html.in | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/docs/migration.html.in b/docs/migration.html.in
index de7d4def75..7c345b65b7 100644
--- a/docs/migration.html.in
+++ b/docs/migration.html.in
@@ -206,14 +206,14 @@
<h2><a id="config">Configuration file handling</a></h2>
<p>
- There are two types of virtual machine known to libvirt. A <em>transient</em>
+ There are two types of virtual machines known to libvirt. A <em>transient</em>
guest only exists while it is running, and has no configuration file stored
on disk. A <em>persistent</em> guest maintains a configuration file on disk
even when it is not running.
</p>
<p>
- By default, a migration operation will not attempt to change any configuration
+ By default, a migration operation will not attempt to modify any configuration
files that may be stored on either the source or destination host. It is the
administrator, or management application's, responsibility to manage distribution
of configuration files (if desired). It is important to note that the <code>/etc/libvirt</code>
@@ -230,14 +230,14 @@
host and removed on the original.
</li>
<li>Centralized configuration files outside libvirt, in a database. A data center
- management application may not storage configuration files at all. Instead it
+ management application may not store configuration files at all. Instead it
may generate libvirt XML on the fly when a guest is booted. It will typically
use transient guests, and thus not have to consider configuration files during
migration.
</li>
<li>Distributed configuration inside libvirt. The configuration file for each
guest is copied to every host where the guest is able to run. Upon migration
- the existing config merely needs to be updated with any changes
+ the existing config merely needs to be updated with any changes.
</li>
<li>Ad-hoc configuration management inside libvirt. Each guest is tied to a
specific host and rarely migrated. When migration is required, the config
@@ -246,7 +246,7 @@
</ul>
<p>
- As mentioned above, libvirt will not touch configuration files during
+ As mentioned above, libvirt will not modify configuration files during
migration by default. The <code>virsh</code> command has two flags to
influence this behaviour. The <code>--undefine-source</code> flag
will cause the configuration file to be removed on the source host
@@ -265,12 +265,12 @@
<th colspan="3">After migration</th>
</tr>
<tr class="subhead">
- <th>Guest type</th>
+ <th>Source type</th>
<th>Source config</th>
<th>Dest config</th>
<th>--undefine-source</th>
<th>--persist</th>
- <th>Guest type</th>
+ <th>Dest type</th>
<th>Source config</th>
<th>Dest config</th>
</tr>
@@ -325,9 +325,9 @@
<td class="y">Y</td>
<td class="n">N</td>
<td class="n">N</td>
- <td>Transient</td>
- <td class="n">N</td>
+ <td>Persistent</td>
<td class="n">N</td>
+ <td class="y">Y<br/>(unchanged dest config)</td>
</tr>
<tr>
<td>Transient</td>
@@ -335,9 +335,9 @@
<td class="y">Y</td>
<td class="y">Y</td>
<td class="n">N</td>
- <td>Transient</td>
- <td class="n">N</td>
+ <td>Persistent</td>
<td class="n">N</td>
+ <td class="y">Y<br/>(unchanged dest config)</td>
</tr>
<tr>
<td>Transient</td>
@@ -347,7 +347,7 @@
<td class="y">Y</td>
<td>Persistent</td>
<td class="n">N</td>
- <td class="y">Y</td>
+ <td class="y">Y<br/>(replaced with source)</td>
</tr>
<tr>
<td>Transient</td>
@@ -357,7 +357,7 @@
<td class="y">Y</td>
<td>Persistent</td>
<td class="n">N</td>
- <td class="y">Y</td>
+ <td class="y">Y<br/>(replaced with source)</td>
</tr>
<!-- src:Y dst:N -->
@@ -411,7 +411,7 @@
<td class="n">N</td>
<td>Persistent</td>
<td class="y">Y</td>
- <td class="y">Y</td>
+ <td class="y">Y<br/>(unchanged dest config)</td>
</tr>
<tr>
<td>Persistent</td>
@@ -421,7 +421,7 @@
<td class="n">N</td>
<td>Persistent</td>
<td class="n">N</td>
- <td class="y">Y</td>
+ <td class="y">Y<br/>(unchanged dest config)</td>
</tr>
<tr>
<td>Persistent</td>
@@ -431,7 +431,7 @@
<td class="y">Y</td>
<td>Persistent</td>
<td class="y">Y</td>
- <td class="y">Y</td>
+ <td class="y">Y<br/>(replaced with source)</td>
</tr>
<tr>
<td>Persistent</td>
@@ -441,7 +441,7 @@
<td class="y">Y</td>
<td>Persistent</td>
<td class="n">N</td>
- <td class="y">Y</td>
+ <td class="y">Y<br/>(replaced with source)</td>
</tr>
</tbody>
</table>
--
2.15.1
6 years, 11 months
[libvirt] [libvirt-php][PATCH 0/7] Rework libvirt_domain_new a bit
by Michal Privoznik
Patches for: https://bugzilla.redhat.com/show_bug.cgi?id=1513190
You can also get the patches from my github:
https://github.com/zippy2/libvirt-php/commits/libvirt_domain_new
Apart from usual case where I just push patches immediately, I'm gonna give
others chance to review since it's not trivial change set.
Michal Privoznik (7):
Make installation_get_xml hurt my eyes less.
Rework libvirt_domain_new a bit
installation_get_xml: Don't override defaults of <on_reboot/> and
friends
util: Introduce VIR_FREE
libvirt_domain_new: Resolve couple of memleaks
installation_get_xml: Resolve couple of memleaks
src: Use VIR_FREE instead of free
src/libvirt-connection.c | 26 ++---
src/libvirt-domain.c | 278 +++++++++++++++++++++++++++--------------------
src/libvirt-network.c | 26 ++---
src/libvirt-node.c | 9 +-
src/libvirt-nodedev.c | 52 ++++-----
src/libvirt-nwfilter.c | 6 +-
src/libvirt-php.c | 234 ++++++++++++++++++++-------------------
src/libvirt-php.h | 2 +-
src/libvirt-snapshot.c | 4 +-
src/libvirt-storage.c | 20 ++--
src/util.c | 2 +-
src/util.h | 6 +
src/vncfunc.c | 5 +-
13 files changed, 362 insertions(+), 308 deletions(-)
--
2.13.6
6 years, 11 months
[libvirt] [PATCH v2] qemu: Add support for hot unplug redirdev device
by Chen Hanxiao
From: Chen Hanxiao <chenhanxiao(a)gmail.com>
We lacked of hot unplugging redirdev device.
This patch add support for it.
We could use detach-device --live now.
Signed-off-by: Chen Hanxiao <chenhanxiao(a)gmail.com>
---
v2: add news section
docs/news.xml | 9 ++++
src/qemu/qemu_driver.c | 4 +-
src/qemu/qemu_hotplug.c | 111 ++++++++++++++++++++++++++++++++++++++++++++++++
src/qemu/qemu_hotplug.h | 3 ++
4 files changed, 126 insertions(+), 1 deletion(-)
diff --git a/docs/news.xml b/docs/news.xml
index 0ec9857e2..ec32dc850 100644
--- a/docs/news.xml
+++ b/docs/news.xml
@@ -35,6 +35,15 @@
<libvirt>
<release version="v4.0.0" date="unreleased">
<section title="New features">
+ <change>
+ <summary>
+ qemu: Add support for hot unplug redirdev device
+ </summary>
+ <description>
+ We've supported hotplug redirdev device, but lacked of
+ hot unplug feature. Now we can do it by libvirt.
+ </description>
+ </change>
</section>
<section title="Improvements">
</section>
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index aa30b119a..180bd0ebf 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -7787,6 +7787,9 @@ qemuDomainDetachDeviceLive(virDomainObjPtr vm,
case VIR_DOMAIN_DEVICE_INPUT:
ret = qemuDomainDetachInputDevice(vm, dev->data.input);
break;
+ case VIR_DOMAIN_DEVICE_REDIRDEV:
+ ret = qemuDomainDetachRedirdevDevice(driver, vm, dev->data.redirdev);
+ break;
case VIR_DOMAIN_DEVICE_FS:
case VIR_DOMAIN_DEVICE_SOUND:
@@ -7796,7 +7799,6 @@ qemuDomainDetachDeviceLive(virDomainObjPtr vm,
case VIR_DOMAIN_DEVICE_SMARTCARD:
case VIR_DOMAIN_DEVICE_MEMBALLOON:
case VIR_DOMAIN_DEVICE_NVRAM:
- case VIR_DOMAIN_DEVICE_REDIRDEV:
case VIR_DOMAIN_DEVICE_NONE:
case VIR_DOMAIN_DEVICE_TPM:
case VIR_DOMAIN_DEVICE_PANIC:
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 24631cb8f..d97aa6051 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -4375,6 +4375,74 @@ qemuDomainRemoveInputDevice(virDomainObjPtr vm,
return 0;
}
+static int
+qemuDomainRemoveRedirdevDevice(virQEMUDriverPtr driver,
+ virDomainObjPtr vm,
+ virDomainRedirdevDefPtr redirdev)
+{
+ qemuDomainObjPrivatePtr priv = vm->privateData;
+ virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
+ virObjectEventPtr event;
+ char *charAlias = NULL;
+ char *tlsAlias = NULL;
+ char *secAlias = NULL;
+ ssize_t idx;
+ int ret = -1;
+
+ VIR_DEBUG("Removing redirdev device %s from domain %p %s",
+ redirdev->info.alias, vm, vm->def->name);
+
+ if (!(charAlias = qemuAliasChardevFromDevAlias(redirdev->info.alias)))
+ goto cleanup;
+
+ if (redirdev->source->type == VIR_DOMAIN_CHR_TYPE_TCP &&
+ redirdev->source->data.tcp.haveTLS == VIR_TRISTATE_BOOL_YES) {
+
+ if (!(tlsAlias = qemuAliasTLSObjFromSrcAlias(charAlias)))
+ goto cleanup;
+
+ /* Best shot at this as the secinfo is destroyed after process launch
+ * and this path does not recreate it. Thus, if the config has the
+ * secret UUID and we have a serial TCP chardev, then formulate a
+ * secAlias which we'll attempt to destroy. */
+ if (cfg->chardevTLSx509secretUUID &&
+ !(secAlias = qemuDomainGetSecretAESAlias(charAlias, false)))
+ goto cleanup;
+ }
+
+ qemuDomainObjEnterMonitor(driver, vm);
+ /* Usually device_del will remove related chardev as well,
+ * So we don't need to check its return value.
+ */
+ ignore_value(qemuMonitorDetachCharDev(priv->mon, charAlias));
+
+ if (tlsAlias)
+ ignore_value(qemuMonitorDelObject(priv->mon, tlsAlias));
+ if (secAlias)
+ ignore_value(qemuMonitorDelObject(priv->mon, secAlias));
+
+ if (qemuDomainObjExitMonitor(driver, vm) < 0)
+ goto cleanup;
+
+ virDomainAuditRedirdev(vm, redirdev, "detach", true);
+
+ event = virDomainEventDeviceRemovedNewFromObj(vm, redirdev->info.alias);
+ qemuDomainEventQueue(driver, event);
+
+ if ((idx = virDomainRedirdevDefFind(vm->def, redirdev)) >= 0)
+ virDomainRedirdevDefRemove(vm->def, idx);
+ qemuDomainReleaseDeviceAddress(vm, &redirdev->info, NULL);
+ virDomainRedirdevDefFree(redirdev);
+
+ ret = 0;
+
+ cleanup:
+ VIR_FREE(charAlias);
+ VIR_FREE(tlsAlias);
+ VIR_FREE(secAlias);
+ return ret;
+}
+
int
qemuDomainRemoveDevice(virQEMUDriverPtr driver,
@@ -5112,6 +5180,49 @@ qemuDomainDetachWatchdog(virQEMUDriverPtr driver,
return ret;
}
+int
+qemuDomainDetachRedirdevDevice(virQEMUDriverPtr driver,
+ virDomainObjPtr vm,
+ virDomainRedirdevDefPtr redirdev)
+{
+ int ret = -1;
+ qemuDomainObjPrivatePtr priv = vm->privateData;
+ virDomainDefPtr vmdef = vm->def;
+ virDomainRedirdevDefPtr tmpRedirdevDef;
+ ssize_t idx;
+
+ if ((idx = virDomainRedirdevDefFind(vmdef, redirdev)) < 0) {
+ virReportError(VIR_ERR_OPERATION_INVALID, "%s",
+ _("no matching redirdev was not found"));
+ return -1;
+ }
+
+ tmpRedirdevDef = vm->def->redirdevs[idx];
+
+ if (!tmpRedirdevDef->info.alias) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("alias not set for redirdev device"));
+ return -1;
+ }
+
+ qemuDomainMarkDeviceForRemoval(vm, &tmpRedirdevDef->info);
+
+ qemuDomainObjEnterMonitor(driver, vm);
+ if (qemuMonitorDelDevice(priv->mon, tmpRedirdevDef->info.alias) < 0) {
+ ignore_value(qemuDomainObjExitMonitor(driver, vm));
+ goto cleanup;
+ }
+ if (qemuDomainObjExitMonitor(driver, vm) < 0)
+ goto cleanup;
+
+ if ((ret = qemuDomainWaitForDeviceRemoval(vm)) == 1)
+ ret = qemuDomainRemoveRedirdevDevice(driver, vm, tmpRedirdevDef);
+
+ cleanup:
+ qemuDomainResetDeviceRemoval(vm);
+ return ret;
+}
+
int
qemuDomainDetachNetDevice(virQEMUDriverPtr driver,
diff --git a/src/qemu/qemu_hotplug.h b/src/qemu/qemu_hotplug.h
index 3e0d618e0..6c642c4fd 100644
--- a/src/qemu/qemu_hotplug.h
+++ b/src/qemu/qemu_hotplug.h
@@ -125,6 +125,9 @@ int qemuDomainDetachShmemDevice(virQEMUDriverPtr driver,
int qemuDomainDetachWatchdog(virQEMUDriverPtr driver,
virDomainObjPtr vm,
virDomainWatchdogDefPtr watchdog);
+int qemuDomainDetachRedirdevDevice(virQEMUDriverPtr driver,
+ virDomainObjPtr vm,
+ virDomainRedirdevDefPtr redirdev);
int qemuDomainAttachInputDevice(virQEMUDriverPtr driver,
virDomainObjPtr vm,
--
2.14.3
6 years, 11 months
[libvirt] [PATCH] qemu: blockjob: Reset disk source index after pivot
by Peter Krempa
Since we are re-detecting the backing chain after pivoting to the active
block commit target (or block copy target) the disk index needs to be
reset to 0. This is necessary since we move a member of the backing
chain to disk->src but clear indexes only starting from
disk->src->backingStore. The freshly detected images have indexes
starting from 1, but since we've pivoted into an image which was
previously a backing store it would have a non-0 index.
The lookup function would then return the top of the chain for queries
like 'vda[1]' instead of the first backing store.
This problem will not be present once we keep the disk indexes stable.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1519745
---
src/qemu/qemu_blockjob.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c
index 0b1616a214..617e4ee564 100644
--- a/src/qemu/qemu_blockjob.c
+++ b/src/qemu/qemu_blockjob.c
@@ -175,6 +175,7 @@ qemuBlockJobEventProcess(virQEMUDriverPtr driver,
disk->mirror = NULL;
disk->mirrorState = VIR_DOMAIN_DISK_MIRROR_STATE_NONE;
disk->mirrorJob = VIR_DOMAIN_BLOCK_JOB_TYPE_UNKNOWN;
+ disk->src->id = 0;
ignore_value(qemuDomainDetermineDiskChain(driver, vm, disk,
true, true));
ignore_value(qemuBlockNodeNamesDetect(driver, vm, asyncJob));
--
2.15.0
6 years, 11 months
[libvirt] [PATCH] libvirt-python : PyObject memory leak
by Peng Hao
libvirt_virConnectDomainEventTunableCallback leak a PyObject
Signed-off-by: Peng Hao <peng.hao2(a)zte.com.cn>
Signed-off-by: Wang Yechao <wang.yechao255(a)zte.com.cn>
---
libvirt-override.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/libvirt-override.c b/libvirt-override.c
index d746350..eab9b62 100644
--- a/libvirt-override.c
+++ b/libvirt-override.c
@@ -6665,6 +6665,7 @@ libvirt_virConnectDomainEventTunableCallback(virConnectPtr conn ATTRIBUTE_UNUSED
Py_XDECREF(pyobj_dict);
} else {
Py_DECREF(pyobj_ret);
+ Py_DECREF(pyobj_dict);
ret = 0;
}
--
1.8.3.1
6 years, 11 months
[libvirt] [REBASE PATCH v2 00/10] Implement query-dump command
by John Ferlan
Original v2:
https://www.redhat.com/archives/libvir-list/2017-November/msg00779.html
Rebase due to additional capabilitiies
v2 Cover:
v1: https://www.redhat.com/archives/libvir-list/2017-November/msg00731.html
Differences from v1 (besides more patches)
Rather than use a timing loop in order to fetch the dump stats and
the presence of the 'query-dump' command, let's use the DUMP_COMPLETED
event and wire that up in order to determine when the dump has been
completed. In the mean time, the previous timing loop is converted into
a qemuDomainGetJobInfoDumpStats to be called if the "right conditions"
exist. Also found/fixed a couple of minor issues from v1 regarding
usage "dumpformat" instead of just "format" from my patch 2 adjustment
and a type for qemuMonitorDumpStatus (was qemuMontiorDumpStatus in v1).
NB: (from v1 cover):
Details in the patches. Essentially though QEMU 2.6 added the ability
to perform the 'dump-guest-memory' via a thread by adding a 'detach'
boolean to the command. In order to watch the progress of the thread
the 'query-dump' command was added. The query-dump will return just
the current status, the total size to be dumped, and the current
progress. So using the migrate stats data in the DomainJobInfo we
can then save our current progress allowing tools such as virsh to
watch that progress. As an added benefit, the dump-guest-memory is
now truly asynchronous.
John Ferlan (10):
qemu: Clean up style for the qemuDumpToFd definition
qemu: Alter dump-guest-memory command generation
qemu: Add support for DUMP_COMPLETED event
qemu: Introduce qemuProcessHandleDumpCompleted
qemu: Introduce qemuMonitor[JSON]QueryDump
qemu: Add new parameter to qemuMonitorDumpToFd
qemu: Introduce qemuDomainGetJobInfoMigrationStats
qemu: Introduce qemuDomainGetJobInfoDumpStats
qemu: Add dump completed event to the capabilities
qemu: Allow showing the dump progress for memory only dump
src/qemu/qemu_capabilities.c | 2 +
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_domain.c | 2 +
src/qemu/qemu_domain.h | 2 +
src/qemu/qemu_driver.c | 157 ++++++++++++++++++---
src/qemu/qemu_monitor.c | 39 ++++-
src/qemu/qemu_monitor.h | 33 ++++-
src/qemu/qemu_monitor_json.c | 122 ++++++++++++++--
src/qemu/qemu_monitor_json.h | 7 +-
src/qemu/qemu_process.c | 23 +++
.../caps_2.10.0-gicv2.aarch64.xml | 1 +
.../caps_2.10.0-gicv3.aarch64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 +
.../caps_2.6.0-gicv2.aarch64.xml | 1 +
.../caps_2.6.0-gicv3.aarch64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 +
tests/qemumonitorjsontest.c | 3 +-
27 files changed, 365 insertions(+), 42 deletions(-)
--
2.13.6
6 years, 11 months