[libvirt PATCH] qemu: do not compare missing cpu data
by Ján Tomko
For x86, we invalidate qemu caps cache if the host CPUID changed.
However other cpu drivers do not have the 'getHostData' function
implemented.
Skip the comparison if we do not have host CPUData available,
since virCPUDataIsIdentical always returns an error in that case.
https://bugzilla.redhat.com/show_bug.cgi?id=2030119
Fixes: 3bc6f46d305ed82f7314ffc4c2a66847b831a6bd
Signed-off-by: Ján Tomko <jtomko(a)redhat.com>
---
src/qemu/qemu_capabilities.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 0e6e73774a..51828ead53 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -4943,7 +4943,8 @@ virQEMUCapsIsValid(void *data,
return false;
}
- if (virCPUDataIsIdentical(priv->cpuData, qemuCaps->cpuData) !=
+ if (priv->cpuData &&
+ virCPUDataIsIdentical(priv->cpuData, qemuCaps->cpuData) !=
VIR_CPU_COMPARE_IDENTICAL) {
VIR_DEBUG("Outdated capabilities for '%s': host cpuid changed",
qemuCaps->binary);
--
2.31.1
2 years, 11 months
[PATCH] Add VM info to improve error log message for qemu monitor
by Rohit Kumar
This patch is to determine the VM which had IO or socket hangup error.
Signed-off-by: Rohit Kumar <rohit.kumar3(a)nutanix.com>
---
src/qemu/qemu_monitor.c | 46 +++++++++++++++++++++++++----------------
1 file changed, 28 insertions(+), 18 deletions(-)
diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
index 75e0e4ed92..d36db280d9 100644
--- a/src/qemu/qemu_monitor.c
+++ b/src/qemu/qemu_monitor.c
@@ -530,13 +530,19 @@ qemuMonitorIO(GSocket *socket G_GNUC_UNUSED,
qemuMonitor *mon = opaque;
bool error = false;
bool hangup = false;
+ virDomainObj *vm = mon->vm;
+ g_autofree char *vmName = NULL;
+
+ if (vm != NULL && vm->def != NULL) {
+ vmName = g_strdup(vm->def->name);
+ }
virObjectRef(mon);
/* lock access to the monitor and protect fd */
virObjectLock(mon);
#if DEBUG_IO
- VIR_DEBUG("Monitor %p I/O on socket %p cond %d", mon, socket, cond);
+ VIR_DEBUG("Monitor %p I/O on socket %p cond %d vm=%p name=%s", mon, socket, cond, vm, NULLSTR(vmName));
#endif
if (mon->fd == -1 || !mon->watch) {
virObjectUnlock(mon);
@@ -583,8 +589,8 @@ qemuMonitorIO(GSocket *socket G_GNUC_UNUSED,
if (!error && !mon->goteof &&
cond & G_IO_ERR) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("Invalid file descriptor while waiting for monitor"));
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Invalid file descriptor while waiting for monitor vm_name=%s"), NULLSTR(vmName));
mon->goteof = true;
}
}
@@ -609,13 +615,13 @@ qemuMonitorIO(GSocket *socket G_GNUC_UNUSED,
virResetLastError();
} else {
if (virGetLastErrorCode() == VIR_ERR_OK && !mon->goteof)
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("Error while processing monitor IO"));
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Error while processing monitor IO vm_name=%s"), NULLSTR(vmName));
virCopyLastError(&mon->lastError);
virResetLastError();
}
- VIR_DEBUG("Error on monitor %s", NULLSTR(mon->lastError.message));
+ VIR_DEBUG("Error on monitor %s vm=%p name=%s", NULLSTR(mon->lastError.message), vm, NULLSTR(vmName));
/* If IO process resulted in an error & we have a message,
* then wakeup that waiter */
if (mon->msg && !mon->msg->finished) {
@@ -631,22 +637,20 @@ qemuMonitorIO(GSocket *socket G_GNUC_UNUSED,
* will try to acquire the virDomainObj *mutex next */
if (mon->goteof) {
qemuMonitorEofNotifyCallback eofNotify = mon->cb->eofNotify;
- virDomainObj *vm = mon->vm;
/* Make sure anyone waiting wakes up now */
virCondSignal(&mon->notify);
virObjectUnlock(mon);
- VIR_DEBUG("Triggering EOF callback");
+ VIR_DEBUG("Triggering EOF callback vm=%p name=%s", vm, NULLSTR(vmName));
(eofNotify)(mon, vm, mon->callbackOpaque);
virObjectUnref(mon);
} else if (error) {
qemuMonitorErrorNotifyCallback errorNotify = mon->cb->errorNotify;
- virDomainObj *vm = mon->vm;
/* Make sure anyone waiting wakes up now */
virCondSignal(&mon->notify);
virObjectUnlock(mon);
- VIR_DEBUG("Triggering error callback");
+ VIR_DEBUG("Triggering error callback vm=%p name=%s", vm, NULLSTR(vmName));
(errorNotify)(mon, vm, mon->callbackOpaque);
virObjectUnref(mon);
} else {
@@ -932,17 +936,23 @@ qemuMonitorSend(qemuMonitor *mon,
qemuMonitorMessage *msg)
{
int ret = -1;
+ virDomainObj *vm = mon->vm;
+ g_autofree char *vmName = NULL;
+
+ if (vm != NULL && vm->def != NULL) {
+ vmName = g_strdup(vm->def->name);
+ }
/* Check whether qemu quit unexpectedly */
if (mon->lastError.code != VIR_ERR_OK) {
- VIR_DEBUG("Attempt to send command while error is set %s",
- NULLSTR(mon->lastError.message));
+ VIR_DEBUG("Attempt to send command while error is set %s vm=%p name=%s",
+ NULLSTR(mon->lastError.message), vm, NULLSTR(vmName));
virSetError(&mon->lastError);
return -1;
}
if (mon->goteof) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("End of file from qemu monitor"));
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("End of file from qemu monitor vm_name=%s"), NULLSTR(vmName));
return -1;
}
@@ -955,15 +965,15 @@ qemuMonitorSend(qemuMonitor *mon,
while (!mon->msg->finished) {
if (virCondWait(&mon->notify, &mon->parent.lock) < 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("Unable to wait on monitor condition"));
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Unable to wait on monitor condition vm_name=%s"), NULLSTR(vmName));
goto cleanup;
}
}
if (mon->lastError.code != VIR_ERR_OK) {
- VIR_DEBUG("Send command resulted in error %s",
- NULLSTR(mon->lastError.message));
+ VIR_DEBUG("Send command resulted in error %s vm=%p name=%s",
+ NULLSTR(mon->lastError.message), vm, NULLSTR(vmName));
virSetError(&mon->lastError);
goto cleanup;
}
--
2.25.1
2 years, 11 months
[PATCH 0/2] disk iomode validation cleanups
by Peter Krempa
Peter Krempa (2):
qemuValidateDomainDeviceDefDiskFrontend: Fix error message if
io='native' is unsupported
qemuValidateDomainDeviceDefDiskFrontend: Aggregate disk iomode
validation
src/qemu/qemu_validate.c | 38 ++++++++++++++++++++++----------------
1 file changed, 22 insertions(+), 16 deletions(-)
--
2.31.1
2 years, 11 months
[libvirt PATCH v2] qemu: Enable unprivileged userfaultfd for post-copy migration
by Jiri Denemark
Userfaultfd is by default allowed only for privileged processes. Since
libvirt runs QEMU unprivileged, we need to enable unprivileged access to
userfaultfd before starting post-copy migration.
Rather than providing a static sysctl configuration file, we set the
sysctl knob in runtime once post-copy migration is requested. This way
unprivileged_userfaultfd is only enabled once actually used.
https://bugzilla.redhat.com/show_bug.cgi?id=1945420
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
Notes:
Version 2:
- setting unprivileged_userfaultfd only when it is not already enabled
- virReportSystemError replaced with VIR_WARN
src/qemu/qemu_migration_params.c | 42 ++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_params.c
index dbc3219826..9ba4811242 100644
--- a/src/qemu/qemu_migration_params.c
+++ b/src/qemu/qemu_migration_params.c
@@ -804,6 +804,41 @@ qemuMigrationCapsToJSON(virBitmap *caps,
}
+/**
+ * qemuMigrationParamsEnableUserfaultfd
+ *
+ * Try to enable unprivileged userfaultfd unless it's missing or already
+ * enabled. Only a warning is logged when we cannot enable it, QEMU will
+ * report an error when enabling post-copy migration capability.
+ */
+static void
+qemuMigrationParamsEnableUserfaultfd(void)
+{
+ const char *sysctl = "/proc/sys/vm/unprivileged_userfaultfd";
+ g_autofree char *buf = NULL;
+
+ if (!virFileExists(sysctl))
+ return;
+
+ if (virFileReadAll(sysctl, 10, &buf) < 0) {
+ VIR_WARN("Cannot read unprivileged userfaultfd state");
+ return;
+ }
+
+ if (STREQ(buf, "1\n")) {
+ VIR_DEBUG("Unprivileged userfaultfd already enabled");
+ return;
+ }
+
+ VIR_DEBUG("Enabling unprivileged userfaultfd for post-copy migration");
+
+ if (virFileWriteStr(sysctl, "1", 0) < 0) {
+ VIR_WARN("Failed to enable unprivileged userfaultfd: %s",
+ g_strerror(errno));
+ }
+}
+
+
/**
* qemuMigrationParamsApply
* @driver: qemu driver
@@ -839,6 +874,13 @@ qemuMigrationParamsApply(virQEMUDriver *driver,
goto cleanup;
}
} else {
+ /* userfaultfd may only be enabled for privileged processes by default,
+ * we need to make sure QEMU can use it before enabling post-copy
+ * migration */
+ if (virBitmapIsBitSet(priv->migrationCaps, QEMU_MIGRATION_CAP_POSTCOPY) &&
+ virBitmapIsBitSet(migParams->caps, QEMU_MIGRATION_CAP_POSTCOPY))
+ qemuMigrationParamsEnableUserfaultfd();
+
if (!(caps = qemuMigrationCapsToJSON(priv->migrationCaps, migParams->caps)))
goto cleanup;
--
2.34.1
2 years, 11 months
[PATCH 0/3] Add virDomainSetLaunchSecurityState API
by Jim Fehlig
V1 series based on initial RFC found here
https://listman.redhat.com/archives/libvir-list/2021-November/msg00460.html
This series is compile tested only. Functional testing will require
reserving the test machine, configuring it, and writing some form of
functional test :-). Is anyone aware of functional tests for the
existing SEV-related APIs?
Also, it has been a while since I added a new API, so not sure about
the current state of the language bindings. Are there any non-automated
tasks to expose the API in the various bindings?
Jim Fehlig (3):
libvirt: Introduce virDomainSetLaunchSecurityState public API
remote: Add RPC support for the virDomainSetLaunchSecurityState API
qemu: Implement the virDomainSetLaunchSecurityState API
include/libvirt/libvirt-domain.h | 35 ++++++++++++++
src/driver-hypervisor.h | 7 +++
src/libvirt-domain.c | 52 +++++++++++++++++++++
src/libvirt_public.syms | 5 ++
src/qemu/qemu_driver.c | 78 ++++++++++++++++++++++++++++++++
src/qemu/qemu_monitor.c | 12 +++++
src/qemu/qemu_monitor.h | 6 +++
src/qemu/qemu_monitor_json.c | 34 ++++++++++++++
src/qemu/qemu_monitor_json.h | 5 ++
src/remote/remote_driver.c | 1 +
src/remote/remote_protocol.x | 17 ++++++-
src/remote_protocol-structs | 9 ++++
12 files changed, 260 insertions(+), 1 deletion(-)
--
2.33.0
2 years, 11 months
Re: [PATCH for-7.0] i386: Deprecate the -no-hpet QEMU command line option
by Thomas Huth
On 06/12/2021 09.40, Thomas Huth wrote:
> The HPET setting has been turned into a machine property a while ago
> already, so we should finally do the next step and deprecate the
> legacy CLI option, too.
> While we're at it, add a proper help text for the machine property, too.
>
> Signed-off-by: Thomas Huth <thuth(a)redhat.com>
> ---
> docs/about/deprecated.rst | 6 ++++++
> hw/i386/pc.c | 2 ++
> qemu-options.hx | 2 +-
> softmmu/vl.c | 1 +
> 4 files changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
> index 5693abb663..1dfe69aa6a 100644
> --- a/docs/about/deprecated.rst
> +++ b/docs/about/deprecated.rst
> @@ -198,6 +198,12 @@ form is preferred.
> Using ``-drive if=none`` to configure the OTP device of the sifive_u
> RISC-V machine is deprecated. Use ``-drive if=pflash`` instead.
>
> +``-no-hpet`` (since 7.0)
> +''''''''''''''''''''''''
> +
> +The HPET setting has been turned into a machine property.
> +Use ``-machine hpet=off`` instead.
[...]
Forgot to CC: the libvirt folks, doing so now.
Seems like libvirt is still using -no-hpet in some few spots, so I guess
these would need to be changed first, before we could finally remove this
option in QEMU?
Thomas
2 years, 11 months
[libvirt PATCH v2 0/2] Fix failure to find VF netdev names during virtual network start
by Laine Stump
The first patch resolves https://bugzilla.redhat.com/2025432, the 2nd
simplifies lower level code in the same manner.
V1 is here: https://listman.redhat.com/archives/libvir-list/2021-December/msg00000.html
Change in V2: Rather than adding an extra bool to the arglist of
virPCIGetVirtualFunctionsFull() (what I did in V1), just switch to
sending the name of the netdev whose phys_port_id we want to match
(called physPortNetDevName) (which will always be non-NULL in the
cases where we want) rather than the phys_port_id itself (physPortID)
(which may or may not be NULL). This way we don't need an extra arg
(we can just check for physPortNetDevName != NULL), and the lower
level function can call virNetDevGetPhysPortID() as needed.
Also added a similar 2nd patch that pushes the call to
virNetDevGetPhysPortID() down even further, into
virPCIGetNetName(). This simplifies the callers, and concentrates all
calls to virNetDevGetPhysPortID() into a single function
(virPCIGetNetName(), duh).
Laine Stump (2):
util: fix erroneous requirement for phys_port_id to get ifname of a VF
util: call virNetDevGetPhysPortID() in less places
src/util/virnetdev.c | 24 +++-----------------
src/util/virpci.c | 52 ++++++++++++++++++++++++++------------------
src/util/virpci.h | 4 ++--
3 files changed, 36 insertions(+), 44 deletions(-)
--
2.33.1
2 years, 11 months
[libvirt PATCH v2 00/15] WIP/RFC: add QEMU "-display dbus" support
by marcandre.lureau@redhat.com
From: Marc-André Lureau <marcandre.lureau(a)redhat.com>
Hi,
This series implements supports for the upcoming QEMU "-display dbus" support.
Development is still in progress, but I hope to land the QEMU support early in
6.3 (last version posted:
https://patchew.org/QEMU/20211009210838.2219430-1-marcandre.lureau@redhat...).
By default, libvirt will start a private VM bus (sharing and reusing the
existing "vmstate" VM bus & code).
The feature set should cover the needs to replace Spice as local client of choice,
including 3daccel/dmabuf, audio, clipboard sharing, usb redirection, and arbitrary
chardev/channels (for serial etc).
The test Gtk4 client is also in progress, currently in development at
https://gitlab.com/marcandre.lureau/qemu-display/. A few dependencies, such as
zbus, require an upcoming release. virt-viewer & boxes will need a port to Gtk4
to make use of the shared widget.
Comments welcome, as we can still adjust the QEMU side etc.
thanks
v2: after Michal review
- split patches for conf & qemu changes
- start D-Bus in qemuExtDevicesStart()
- use symlinks for xml2xml tests
- teach domdisplay to return a dbus URI
- rebase & bug fixes
Marc-André Lureau (15):
qemu: add chardev-vdagent capability check
qemu: add -display dbus capability check (to update to 6.3)
conf: add <graphics type='dbus'>
qemu: start the D-Bus daemon for the display
qemu: add -display dbus support
virsh: refactor/split cmdDomDisplay()
virsh: report the D-Bus bus URI for domdisplay
conf: add <audio type='dbus'> support
qemu: add audio type 'dbus'
conf: add dbus <clipboard>
qemu: add dbus clipboard sharing
conf: add <serial type='dbus'>
qemu: add -chardev dbus support
qemu: add usbredir type 'dbus'
docs: document <graphics> type dbus
docs/formatdomain.rst | 43 +-
docs/schemas/basictypes.rng | 7 +
docs/schemas/domaincommon.rng | 71 ++++
src/bhyve/bhyve_command.c | 1 +
src/conf/domain_conf.c | 141 ++++++-
src/conf/domain_conf.h | 15 +
src/conf/domain_validate.c | 41 +-
src/libxl/libxl_conf.c | 1 +
src/qemu/qemu_capabilities.c | 6 +
src/qemu/qemu_capabilities.h | 2 +
src/qemu/qemu_command.c | 80 +++-
src/qemu/qemu_domain.c | 1 +
src/qemu/qemu_driver.c | 10 +-
src/qemu/qemu_extdevice.c | 13 +
src/qemu/qemu_hotplug.c | 1 +
src/qemu/qemu_monitor_json.c | 10 +
src/qemu/qemu_process.c | 40 +-
src/qemu/qemu_validate.c | 33 ++
src/security/security_dac.c | 2 +
src/vmx/vmx.c | 1 +
.../domaincapsdata/qemu_6.2.0-q35.x86_64.xml | 1 +
.../domaincapsdata/qemu_6.2.0-tcg.x86_64.xml | 1 +
tests/domaincapsdata/qemu_6.2.0.x86_64.xml | 1 +
.../caps_6.1.0.x86_64.xml | 1 +
.../caps_6.2.0.aarch64.xml | 1 +
.../caps_6.2.0.x86_64.replies | 10 +-
.../caps_6.2.0.x86_64.xml | 2 +
.../graphics-dbus-address.args | 30 ++
.../graphics-dbus-address.xml | 35 ++
.../qemuxml2argvdata/graphics-dbus-audio.args | 33 ++
.../qemuxml2argvdata/graphics-dbus-audio.xml | 45 +++
.../graphics-dbus-chardev.args | 32 ++
.../graphics-dbus-chardev.xml | 43 ++
.../graphics-dbus-clipboard.args | 31 ++
.../graphics-dbus-clipboard.xml | 35 ++
tests/qemuxml2argvdata/graphics-dbus-p2p.args | 30 ++
tests/qemuxml2argvdata/graphics-dbus-p2p.xml | 33 ++
.../graphics-dbus-usbredir.args | 34 ++
.../graphics-dbus-usbredir.xml | 30 ++
tests/qemuxml2argvdata/graphics-dbus.args | 30 ++
tests/qemuxml2argvdata/graphics-dbus.xml | 33 ++
tests/qemuxml2argvtest.c | 21 +
.../graphics-dbus-address.xml | 1 +
.../graphics-dbus-audio.xml | 1 +
.../graphics-dbus-chardev.xml | 1 +
.../graphics-dbus-clipboard.xml | 1 +
.../qemuxml2xmloutdata/graphics-dbus-p2p.xml | 1 +
tests/qemuxml2xmloutdata/graphics-dbus.xml | 1 +
tests/qemuxml2xmltest.c | 20 +
tools/virsh-domain.c | 366 +++++++++---------
50 files changed, 1231 insertions(+), 192 deletions(-)
create mode 100644 tests/qemuxml2argvdata/graphics-dbus-address.args
create mode 100644 tests/qemuxml2argvdata/graphics-dbus-address.xml
create mode 100644 tests/qemuxml2argvdata/graphics-dbus-audio.args
create mode 100644 tests/qemuxml2argvdata/graphics-dbus-audio.xml
create mode 100644 tests/qemuxml2argvdata/graphics-dbus-chardev.args
create mode 100644 tests/qemuxml2argvdata/graphics-dbus-chardev.xml
create mode 100644 tests/qemuxml2argvdata/graphics-dbus-clipboard.args
create mode 100644 tests/qemuxml2argvdata/graphics-dbus-clipboard.xml
create mode 100644 tests/qemuxml2argvdata/graphics-dbus-p2p.args
create mode 100644 tests/qemuxml2argvdata/graphics-dbus-p2p.xml
create mode 100644 tests/qemuxml2argvdata/graphics-dbus-usbredir.args
create mode 100644 tests/qemuxml2argvdata/graphics-dbus-usbredir.xml
create mode 100644 tests/qemuxml2argvdata/graphics-dbus.args
create mode 100644 tests/qemuxml2argvdata/graphics-dbus.xml
create mode 120000 tests/qemuxml2xmloutdata/graphics-dbus-address.xml
create mode 120000 tests/qemuxml2xmloutdata/graphics-dbus-audio.xml
create mode 120000 tests/qemuxml2xmloutdata/graphics-dbus-chardev.xml
create mode 120000 tests/qemuxml2xmloutdata/graphics-dbus-clipboard.xml
create mode 120000 tests/qemuxml2xmloutdata/graphics-dbus-p2p.xml
create mode 120000 tests/qemuxml2xmloutdata/graphics-dbus.xml
--
2.34.1.8.g35151cf07204
2 years, 11 months
[PATCH 00/17] qemu: Add support for blocking writes for the blockdev-mirror job
by Peter Krempa
Blocking writes ensure that the mirroring converges even when the guest
is I/O intensive with a fast local storage and slow mirror.
This patchset does it by introducing flags which use the blocking mode
as it will have performance impact, and for guests which do I/O in
bursts it might be detrimental to their performance.
One could argue that both the copy job and migration have the
expectations of actually using the copy so ensuring that it converges
might be also something we'd want to do by default. This would obviously
greatly simplify this series, but I didn't want to change the default.
Peter Krempa (17):
qemu: monitor: Avoid ternary operators in helpers for
drive/blockdev-mirror
qemuMonitorJSONHandleShutdown: Use virTristateBoolFromBool
qemuMonitorJSONEjectMedia: Use a bool directly for constructing JSON
with 'b' modifier
qemuMonitorJSONMigrate: Extract flags prior to constructing command
qemuMonitorJSONGraphicsRelocate: Clean up command argument
construction
qemu: monitor: Add support for 'write-blocking' copy mode for
blockdev-mirror
include: virDomainBlockCopyFlags: Convert to prefix comments
virDomainBlockCopy: Introduce VIR_DOMAIN_BLOCK_COPY_SYNCHRONOUS_WRITES
flag
qemuDomainBlockCopy: Implement
VIR_DOMAIN_BLOCK_COPY_SYNCHRONOUS_WRITES
include: virDomainMigrateFlags: Remove "block alignment" whitespace
man: virsh: Separate paragrapsh describing distinct flags
VIR_REQUIRE_FLAG_(GOTO|RET): Add parens around arguments in expansion
virDomainMigrate: Introduce VIR_MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES
flag
qemu: migration: Implement VIR_MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES
docs: Convert 'migration' doc to RST
docs: migration: Add a paragraph about non-shared storage migration
NEWS: Mention synchronous copy job additions
NEWS.rst | 12 +
docs/manpages/virsh.rst | 45 +-
docs/meson.build | 2 +-
docs/migration.html.in | 688 -------------------------------
docs/migration.rst | 490 ++++++++++++++++++++++
include/libvirt/libvirt-domain.h | 63 +--
src/internal.h | 4 +-
src/libvirt-domain.c | 26 ++
src/qemu/qemu_driver.c | 17 +-
src/qemu/qemu_migration.c | 17 +-
src/qemu/qemu_migration.h | 1 +
src/qemu/qemu_monitor.c | 10 +-
src/qemu/qemu_monitor.h | 3 +-
src/qemu/qemu_monitor_json.c | 67 ++-
src/qemu/qemu_monitor_json.h | 3 +-
tests/qemumonitorjsontest.c | 2 +-
tools/virsh-domain.c | 22 +-
17 files changed, 707 insertions(+), 765 deletions(-)
delete mode 100644 docs/migration.html.in
create mode 100644 docs/migration.rst
--
2.31.1
2 years, 11 months
[PATCH 00/16] Clean up of virJSONValueFree usage and few related refactors
by Peter Krempa
Peter Krempa (16):
qemu: hotplug: Use automatic freeing for virJSONValue
qemuDomainHotplugAddIOThread: Automatically free virJSONValue
qemuMonitorBlockdevCreate: Use double pointer instead of always
consuming '@props'
virLockDaemonClientPreExecRestart: Modernize JSON object construction
virLockDaemonPostExecRestart: Automatically free temporary variables
virLockDaemonPostExecRestart: Refactor cleanup
virLogDaemonPostExecRestart: Use automatic freeing for variables
virLogDaemonPostExecRestart: Refactor cleanup
virCHProcessUpdateInfo: Automatically free virJSONValue
tests/virnetdaemontest.c: testExecRestart: Automatically free
virJSONValue-s
qemuAgentGuestSync: Don't use goto for looping
qemuMonitorJSONGetCPUModelExpansion: Don't use goto for looping
qemuMonitorAddObject: Use g_clear_pointer for a free and reset
operation
qemuAgentIOProcessLine: refactor cleanup
qemu: agent: Automatically free virJSONValue-s
qemu: agent: Remove unneeded cleanup sections
src/ch/ch_process.c | 4 +-
src/locking/lock_daemon.c | 85 ++++------
src/logging/log_daemon.c | 42 ++---
src/qemu/qemu_agent.c | 304 ++++++++++++++++-------------------
src/qemu/qemu_block.c | 3 +-
src/qemu/qemu_driver.c | 3 +-
src/qemu/qemu_hotplug.c | 13 +-
src/qemu/qemu_monitor.c | 20 +--
src/qemu/qemu_monitor.h | 2 +-
src/qemu/qemu_monitor_json.c | 79 +++++----
src/qemu/qemu_monitor_json.h | 2 +-
tests/virnetdaemontest.c | 6 +-
12 files changed, 254 insertions(+), 309 deletions(-)
--
2.31.1
2 years, 11 months