[libvirt] [RFC: PATCH 0/2] Display allocation during dumpxml
by Eric Blake
I'm still working on code to populate the latest numbers for
each disk of a domain, including getting numbers for offline
domains, but have confirmed that with these two patches alone
I'm able to see <capacity> and <allocation> numbers for block
volumes of live domains (thanks to how we populate backing
chain information). So while there are more patches to come,
I'd like to get review started on my proposed API addition.
Eric Blake (2):
dumpxml: add flag to virDomainGetXMLDesc
dumpxml: prepare to output block info
docs/schemas/domaincommon.rng | 22 ++++++++++++++++++++++
include/libvirt/libvirt.h.in | 1 +
src/conf/domain_conf.c | 16 +++++++++++++++-
src/libvirt.c | 15 +++++++++++----
src/util/virstoragefile.h | 3 ++-
tools/virsh-domain.c | 6 ++++++
tools/virsh.pod | 6 ++++--
7 files changed, 61 insertions(+), 8 deletions(-)
--
1.9.3
10 years
[libvirt] [PATCH 0/2] Couple of UEFI fixes
by Michal Privoznik
Literally couple.
Michal Privoznik (2):
qemu: Delete nvram store for transient domains too
qemuPrepareNVRAM: Save domain conf only if domain's persistent
src/conf/domain_conf.c | 10 ++++++++--
src/conf/domain_conf.h | 1 +
src/qemu/qemu_driver.c | 3 ++-
src/qemu/qemu_process.c | 25 +++++++++++++++++--------
4 files changed, 28 insertions(+), 11 deletions(-)
--
2.0.4
10 years
[libvirt] [PATCH v2 0/4] use the 'vram' attribute for QEMU video devices
by Pavel Hrdina
There are some changes from the first version. We will not have a new 'vgamem'
attribute for video devices because we can use the 'vram' attribute. So far
for QEMU the 'vram' is used only to set the secondary ram for QXL which seems
to be correct as the secondary ram is used for pixmaps and surfaces.
The 'vgamem_mb' parameter for QXL sets the VGA framebuffer size, but the VGA
mode in QXL is used only as fallback if the OS doesn't have any QXL drivers
or before the drivers are loaded. The VGA framebuffer is part of the first ram
for QXL and for that we have 'ram' attribute. The rest of the first ram is
memory for rendering commands and it's data. Default VGA framebuffer size is
8MB which is sufficient.
Other QEMU video devices have only 'vgamem_mb' parameter and we will use the
'vram' attribute to set the size of video memory as it's used also for other
hypervisors.
The first two patches clean the usage of vram attribute and improve the
documentation and the rest two patches implements usage of 'vram' attribute
for remaining QEMU video devices.
Pavel Hrdina (4):
video: cleanup usage of vram attribute and update documentation
qxl: fix setting ram and vram values for qemu qxl device
caps: introduce new qemu capability for vgamem_mb device property
qemu-command: introduce new vgamem attribute for video devices
docs/formatdomain.html.in | 62 +++++++-----
src/conf/domain_conf.c | 19 +++-
src/conf/domain_conf.h | 3 +-
src/qemu/qemu_capabilities.c | 25 +++++
src/qemu/qemu_capabilities.h | 3 +
src/qemu/qemu_command.c | 44 ++++++++-
tests/qemucapabilitiesdata/caps_1.2.2-1.caps | 2 +
tests/qemucapabilitiesdata/caps_1.2.2-1.replies | 100 +++++++++++++++++--
tests/qemucapabilitiesdata/caps_1.3.1-1.caps | 3 +
tests/qemucapabilitiesdata/caps_1.3.1-1.replies | 108 +++++++++++++++++++--
tests/qemucapabilitiesdata/caps_1.4.2-1.caps | 3 +
tests/qemucapabilitiesdata/caps_1.4.2-1.replies | 108 +++++++++++++++++++--
tests/qemucapabilitiesdata/caps_1.5.3-1.caps | 3 +
tests/qemucapabilitiesdata/caps_1.5.3-1.replies | 108 +++++++++++++++++++--
tests/qemucapabilitiesdata/caps_1.6.0-1.caps | 3 +
tests/qemucapabilitiesdata/caps_1.6.0-1.replies | 108 +++++++++++++++++++--
tests/qemucapabilitiesdata/caps_1.6.50-1.caps | 3 +
tests/qemucapabilitiesdata/caps_1.6.50-1.replies | 108 +++++++++++++++++++--
tests/qemucapabilitiesdata/caps_2.1.1-1.caps | 3 +
tests/qemucapabilitiesdata/caps_2.1.1-1.replies | 108 +++++++++++++++++++--
.../qemuxml2argv-graphics-spice-compression.args | 2 +-
.../qemuxml2argv-graphics-spice-sasl.args | 4 +-
.../qemuxml2argv-graphics-spice.args | 4 +-
.../qemuxml2argv-pcihole64-q35.args | 2 +-
tests/qemuxml2argvdata/qemuxml2argv-q35.args | 2 +-
.../qemuxml2argv-video-qxl-device-vgamem.args | 6 ++
.../qemuxml2argv-video-qxl-device-vgamem.xml | 29 ++++++
.../qemuxml2argv-video-qxl-device.args | 6 ++
.../qemuxml2argv-video-qxl-device.xml | 29 ++++++
.../qemuxml2argv-video-qxl-nodevice.args | 5 +
.../qemuxml2argv-video-qxl-nodevice.xml | 29 ++++++
.../qemuxml2argv-video-qxl-sec-device-vgamem.args | 8 ++
.../qemuxml2argv-video-qxl-sec-device-vgamem.xml | 32 ++++++
.../qemuxml2argv-video-qxl-sec-device.args | 7 ++
.../qemuxml2argv-video-qxl-sec-device.xml | 32 ++++++
.../qemuxml2argv-video-qxl-sec-nodevice.xml | 32 ++++++
.../qemuxml2argv-video-vga-device-vgamem.args | 6 ++
.../qemuxml2argv-video-vga-device-vgamem.xml | 29 ++++++
.../qemuxml2argv-video-vga-device.args | 6 ++
.../qemuxml2argv-video-vga-device.xml | 29 ++++++
.../qemuxml2argv-video-vga-nodevice.args | 5 +
.../qemuxml2argv-video-vga-nodevice.xml | 29 ++++++
tests/qemuxml2argvtest.c | 16 +++
tools/virsh-domain.c | 4 +-
44 files changed, 1188 insertions(+), 89 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-qxl-device-vgamem.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-qxl-device-vgamem.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-qxl-device.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-qxl-device.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-qxl-nodevice.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-qxl-nodevice.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-qxl-sec-device-vgamem.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-qxl-sec-device-vgamem.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-qxl-sec-device.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-qxl-sec-device.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-qxl-sec-nodevice.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-vga-device-vgamem.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-vga-device-vgamem.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-vga-device.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-vga-device.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-vga-nodevice.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-video-vga-nodevice.xml
--
2.0.4
10 years
[libvirt] How can I get drive_mirror migration progress with non-shared storage on KVM ?
by Wang Rui
Hi,
I want to get a total progress(memory + storage). In none drive mirror migration, I can
use virDomainGetJobInfo API to get the total progress. But in drive mirror migration,
it seems that I must get file progress by virDomainGetBlockJobInfo and momery progress
by virDomainGetJobInfo separately. So does the job status.
Is there a way to get the total progress and job status?
Thanks.
10 years
[libvirt] [PATCH v3] leaseshelper: improvements to support all events
by Nehal J Wani
This patch enables the helper program to detect event(s) triggered when there
is a change in lease length or expiry and client-id. This transfers complete
control of leases database to libvirt and obsoletes use of the lease database
file (<network-name>.leases). That file will not be created, read, or written.
This is achieved by adding the option --leasefile-ro to dnsmasq and passing a
custom env var to leaseshelper, which helps us map events related to leases
with their corresponding network bridges, no matter what the event be.
Also, this requires the addition of a new non-lease entry in our custom lease
database: "server-duid". It is required to identify a DHCPv6 server.
Now that dnsmasq doesn't maintain its own leases database, it relies on our
helper program to tell it about previous leases and server duid. Thus, this
patch makes our leases program honor an extra action: "init", in which it sends
the known info in a particular format to dnsmasq by printing it to stdout.
---
This is compatible with libvirt 1.2.6 as only additions have been
introduced, and the old leases file (*.status) will still be supported.
v3: * Add server-duid as an entry in the lease object for every ipv6 lease.
* Remove unnecessary variables and double copies.
* Take value from DNSMASQ_OLD_HOSTNAME if hostname is not known.
v2: http://www.redhat.com/archives/libvir-list/2014-July/msg01109.html
v1: https://www.redhat.com/archives/libvir-list/2014-July/msg00568.html
src/network/bridge_driver.c | 3 +
src/network/leaseshelper.c | 132 +++++++++++++++++++++++++++++++++++---------
2 files changed, 109 insertions(+), 26 deletions(-)
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 965fdec..b578b3a 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -1288,7 +1288,10 @@ networkBuildDhcpDaemonCommandLine(virNetworkObjPtr network,
cmd = virCommandNew(dnsmasqCapsGetBinaryPath(caps));
virCommandAddArgFormat(cmd, "--conf-file=%s", configfile);
+ /* Libvirt gains full control of leases database */
+ virCommandAddArgFormat(cmd, "--leasefile-ro");
virCommandAddArgFormat(cmd, "--dhcp-script=%s", leaseshelper_path);
+ virCommandAddEnvPair(cmd, "VIR_BRIDGE_NAME", network->def->bridge);
*cmdout = cmd;
ret = 0;
diff --git a/src/network/leaseshelper.c b/src/network/leaseshelper.c
index c8543a2..e984cbb 100644
--- a/src/network/leaseshelper.c
+++ b/src/network/leaseshelper.c
@@ -50,6 +50,12 @@
*/
#define VIR_NETWORK_DHCP_LEASE_FILE_SIZE_MAX (32 * 1024 * 1024)
+/*
+ * Use this when passing possibly-NULL strings to printf-a-likes.
+ * Required for unknown parameters during init call.
+ */
+#define EMPTY_STR(s) ((s) ? (s) : "*")
+
static const char *program_name;
/* Display version information. */
@@ -65,7 +71,7 @@ usage(int status)
if (status) {
fprintf(stderr, _("%s: try --help for more details\n"), program_name);
} else {
- printf(_("Usage: %s add|old|del mac|clientid ip [hostname]\n"
+ printf(_("Usage: %s add|old|del|init mac|clientid ip [hostname]\n"
"Designed for use with 'dnsmasq --dhcp-script'\n"
"Refer to man page of dnsmasq for more details'\n"),
program_name);
@@ -89,6 +95,7 @@ enum virLeaseActionFlags {
VIR_LEASE_ACTION_ADD, /* Create new lease */
VIR_LEASE_ACTION_OLD, /* Lease already exists, renew it */
VIR_LEASE_ACTION_DEL, /* Delete the lease */
+ VIR_LEASE_ACTION_INIT, /* Tell dnsmasq of existing leases on restart */
VIR_LEASE_ACTION_LAST
};
@@ -96,7 +103,7 @@ enum virLeaseActionFlags {
VIR_ENUM_DECL(virLeaseAction);
VIR_ENUM_IMPL(virLeaseAction, VIR_LEASE_ACTION_LAST,
- "add", "old", "del");
+ "add", "old", "del", "init");
int
main(int argc, char **argv)
@@ -112,20 +119,24 @@ main(int argc, char **argv)
const char *interface = virGetEnvAllowSUID("DNSMASQ_INTERFACE");
const char *exptime_tmp = virGetEnvAllowSUID("DNSMASQ_LEASE_EXPIRES");
const char *hostname = virGetEnvAllowSUID("DNSMASQ_SUPPLIED_HOSTNAME");
+ const char *server_duid = virGetEnvAllowSUID("DNSMASQ_SERVER_DUID");
const char *leases_str = NULL;
long long currtime = 0;
long long expirytime = 0;
size_t i = 0;
+ size_t count_ipv6 = 0;
+ size_t count_ipv4 = 0;
int action = -1;
int pid_file_fd = -1;
int rv = EXIT_FAILURE;
int custom_lease_file_len = 0;
- bool add = false;
bool delete = false;
virJSONValuePtr lease_new = NULL;
virJSONValuePtr lease_tmp = NULL;
virJSONValuePtr leases_array = NULL;
virJSONValuePtr leases_array_new = NULL;
+ virJSONValuePtr *leases_ipv4 = NULL;
+ virJSONValuePtr *leases_ipv6 = NULL;
virSetErrorFunc(NULL, NULL);
virSetErrorLogPriorityFunc(NULL);
@@ -156,16 +167,17 @@ main(int argc, char **argv)
}
}
- if (argc != 4 && argc != 5) {
+ if (argc != 4 && argc != 5 && argc != 2) {
/* Refer man page of dnsmasq --dhcp-script for more details */
usage(EXIT_FAILURE);
}
/* Make sure dnsmasq knows the interface. The interface name is not known
- * when dnsmasq (re)starts and throws 'del' events for expired leases.
- * So, if any old lease has expired, it will be automatically removed the
- * next time this program is invoked */
- if (!interface)
+ * via env variable set by dnsmasq when dnsmasq (re)starts and throws 'del'
+ * events for expired leases. So, libvirtd sets another env var for this
+ * purpose */
+ if (!interface &&
+ !(interface = virGetEnvAllowSUID("VIR_BRIDGE_NAME")))
goto cleanup;
ip = argv[3];
@@ -176,6 +188,10 @@ main(int argc, char **argv)
if (argc == 5)
hostname = argv[4];
+ /* In case hostname is still unkown, use the last known one */
+ if (!hostname)
+ hostname = virGetEnvAllowSUID("DNSMASQ_OLD_HOSTNAME");
+
if (VIR_STRDUP(exptime, exptime_tmp) < 0)
goto cleanup;
@@ -185,7 +201,7 @@ main(int argc, char **argv)
exptime[strlen(exptime) - 1] = '\0';
/* Check if it is an IPv6 lease */
- if (virGetEnvAllowSUID("DNSMASQ_IAID")) {
+ if (iaid) {
mac = virGetEnvAllowSUID("DNSMASQ_MAC");
clientid = argv[2];
}
@@ -235,7 +251,6 @@ main(int argc, char **argv)
delete = true;
if (action == VIR_LEASE_ACTION_ADD ||
action == VIR_LEASE_ACTION_OLD) {
- add = true;
/* Create new lease */
if (!(lease_new = virJSONValueNewObject())) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
@@ -260,11 +275,13 @@ main(int argc, char **argv)
goto cleanup;
if (clientid && virJSONValueObjectAppendString(lease_new, "client-id", clientid) < 0)
goto cleanup;
+ if (server_duid && virJSONValueObjectAppendString(lease_new, "server-duid", server_duid) < 0)
+ goto cleanup;
if (expirytime && virJSONValueObjectAppendNumberLong(lease_new, "expiry-time", expirytime) < 0)
goto cleanup;
}
}
- } else {
+ } else if (action != VIR_LEASE_ACTION_INIT) {
fprintf(stderr, _("Unsupported action: %s\n"),
virLeaseActionTypeToString(action));
exit(EXIT_FAILURE);
@@ -294,7 +311,7 @@ main(int argc, char **argv)
i = 0;
while (i < virJSONValueArraySize(leases_array)) {
const char *ip_tmp = NULL;
- long long expirytime_tmp = -1;
+ const char *server_duid_tmp = NULL;
if (!(lease_tmp = virJSONValueArrayGet(leases_array, i))) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
@@ -303,14 +320,13 @@ main(int argc, char **argv)
}
if (!(ip_tmp = virJSONValueObjectGetString(lease_tmp, "ip-address")) ||
- (virJSONValueObjectGetNumberLong(lease_tmp, "expiry-time", &expirytime_tmp) < 0)) {
+ (virJSONValueObjectGetNumberLong(lease_tmp, "expiry-time", &expirytime) < 0)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to parse json"));
goto cleanup;
}
-
/* Check whether lease has expired or not */
- if (expirytime_tmp < currtime) {
+ if (expirytime < currtime) {
i++;
continue;
}
@@ -321,6 +337,30 @@ main(int argc, char **argv)
continue;
}
+ /* Store pointers to ipv4 and ipv6 leases */
+ if (strchr(ip_tmp, ':')) {
+ /* This is an ipv6 lease */
+ ignore_value(VIR_APPEND_ELEMENT_COPY(leases_ipv6, count_ipv6, lease_tmp));
+ if ((server_duid_tmp
+ = virJSONValueObjectGetString(lease_tmp, "server-duid"))) {
+ if (!server_duid) {
+ /* Control reaches here when the 'action' is not for an
+ * ipv6 lease or, for some weird reason the env var
+ * DNSMASQ_SERVER_DUID wasn't set*/
+ server_duid = server_duid_tmp;
+ }
+ } else {
+ /* Inject server-duid into those ipv6 leases which
+ * didn't have it previously, for example, those
+ * created by leaseshelper from libvirt 1.2.6 */
+ if (virJSONValueObjectAppendString(lease_tmp, "server-duid", server_duid) < 0)
+ goto cleanup;
+ }
+ } else {
+ /* This is an ipv4 lease */
+ ignore_value(VIR_APPEND_ELEMENT_COPY(leases_ipv4, count_ipv4, lease_tmp));
+ }
+
/* Move old lease to new array */
if (virJSONValueArrayAppend(leases_array_new, lease_tmp) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
@@ -333,31 +373,71 @@ main(int argc, char **argv)
}
}
- if (add) {
+ switch ((enum virLeaseActionFlags) action) {
+ case VIR_LEASE_ACTION_INIT:
+ /* Man page of dnsmasq says: the script (helper program, in our case)
+ * should write the saved state of the lease database, in dnsmasq
+ * leasefile format, to stdout and exit with zero exit code, when
+ * called with argument init. Format:
+ * $expirytime $mac $ip $hostname $clientid # For all ipv4 leases
+ * duid $server-duid # If DHCPv6 is present
+ * $expirytime $iaid $ip $hostname $clientduid # For all ipv6 leases */
+ for (i = 0; i < count_ipv4; i++) {
+ lease_tmp = leases_ipv4[i];
+ virJSONValueObjectGetNumberLong(lease_tmp, "expiry-time", &expirytime);
+ printf("%lld %s %s %s %s\n",
+ expirytime,
+ virJSONValueObjectGetString(lease_tmp, "mac-address"),
+ virJSONValueObjectGetString(lease_tmp, "ip-address"),
+ EMPTY_STR(virJSONValueObjectGetString(lease_tmp, "hostname")),
+ EMPTY_STR(virJSONValueObjectGetString(lease_tmp, "client-id")));
+ }
+ if (server_duid) {
+ printf("duid %s\n", server_duid);
+ for (i = 0; i < count_ipv6; i++) {
+ lease_tmp = leases_ipv6[i];
+ virJSONValueObjectGetNumberLong(lease_tmp, "expiry-time", &expirytime);
+ printf("%lld %s %s %s %s\n",
+ expirytime,
+ virJSONValueObjectGetString(lease_tmp, "iaid"),
+ virJSONValueObjectGetString(lease_tmp, "ip-address"),
+ EMPTY_STR(virJSONValueObjectGetString(lease_tmp, "hostname")),
+ EMPTY_STR(virJSONValueObjectGetString(lease_tmp, "client-id")));
+ }
+ }
+ break;
+
+ case VIR_LEASE_ACTION_OLD:
+ case VIR_LEASE_ACTION_ADD:
if (virJSONValueArrayAppend(leases_array_new, lease_new) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to create json"));
goto cleanup;
}
lease_new = NULL;
- }
- if (!(leases_str = virJSONValueToString(leases_array_new, true))) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("empty json array"));
- goto cleanup;
- }
+ default:
+ if (!(leases_str = virJSONValueToString(leases_array_new, true))) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("empty json array"));
+ goto cleanup;
+ }
- /* Write to file */
- if (virFileRewrite(custom_lease_file, 0644,
- customLeaseRewriteFile, &leases_str) < 0)
- goto cleanup;
+ /* Write to file */
+ if (virFileRewrite(custom_lease_file, 0644,
+ customLeaseRewriteFile, &leases_str) < 0)
+ goto cleanup;
+ }
rv = EXIT_SUCCESS;
cleanup:
if (pid_file_fd != -1)
virPidFileReleasePath(pid_file, pid_file_fd);
+ for (i = 0; i < count_ipv4; i++)
+ VIR_FREE(leases_ipv4);
+ for (i = 0; i < count_ipv6; i++)
+ VIR_FREE(leases_ipv6);
VIR_FREE(pid_file);
VIR_FREE(exptime);
--
1.9.3
10 years
[libvirt] [PATCH] qemu: Resolve Coverity UNINIT
by John Ferlan
For some reason, commit id '72b4151f' triggered a Coverity uninitialized
'reply' variable check when referenced within the for loop.
It seems Coverity doesn't know that flags will have to be either AFFECT_LIVE
or AFFECT_CONFIG after the virDomainLiveConfigHelperMethod call.
By adding a "sa_assert()" to confirm that fact, Coverity is happy again.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
NOTE:
Using "sa_assert(flags & (VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG));
did not clear the error - only the two separate checks using the ||.
Yes, the parentheses are overkill...
src/qemu/qemu_driver.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 9b19629..a84fd47 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -17000,6 +17000,8 @@ qemuDomainGetBlockIoTune(virDomainPtr dom,
if (virDomainLiveConfigHelperMethod(caps, driver->xmlopt, vm, &flags,
&persistentDef) < 0)
goto endjob;
+ sa_assert((flags & VIR_DOMAIN_AFFECT_LIVE) ||
+ (flags & VIR_DOMAIN_AFFECT_CONFIG));
if (flags & VIR_DOMAIN_AFFECT_LIVE) {
/* If the VM is running, we can check if the current VM can use
--
1.9.3
10 years
[libvirt] ANNOUNCE: libvirt 1.1.3.8 maintenance release
by Cole Robinson
libvirt 1.1.3.8 maintenance release is now available. This is
libvirt 1.1.3 with additional bugfixes that have accumulated
upstream since the initial release.
This release can be downloaded at:
http://libvirt.org/sources/stable_updates/libvirt-1.1.3.8.tar.gz
I originally release 1.1.3.7, but then when I attempted to rebuild it I hit a
compile error. Really not sure why it didn't hit me during before. So 1.1.3.8
is a brown paper bag release.
Changes in version 1.1.3.7:
* CVE-2014-7823: dumpxml: security hole with migratable flag
* node_device_udev: Try harder to get human readable vendor:product
* tests: don't fail with newer gnutls
* Fix crash in virsystemdtest with dbus 1.7.6
* domain_conf: fix domain deadlock
* CVE-2014-3633: qemu: blkiotune: Use correct definition when looking up
disk
Changes in version 1.1.3.8:
* tests: Fix compilation
For info about past maintenance releases, see:
http://wiki.libvirt.org/page/Maintenance_Releases
Thanks,
Cole
10 years
[libvirt] ANNOUNCE: libvirt 1.2.9.1 maintenance release
by Cole Robinson
libvirt 1.2.9.1 maintenance release is now available. This is
libvirt 1.2.9 with additional bugfixes that have accumulated
upstream since the initial release.
This release can be downloaded at:
http://libvirt.org/sources/stable_updates/libvirt-1.2.9.1.tar.gz
Changes in this version:
* qemu: Don't try to parse -help for new QEMU
* qemu: Always set migration capabilities
* nwfilter: fix deadlock caused updating network device and nwfilter
* qemuPrepareNVRAM: Save domain conf only if domain's persistent
* Do not crash on gluster snapshots with no host name
* Display nicer error message for unsupported chardev hotplug
* Fix virDomainChrEquals for spicevmc
* qemu: Update fsfreeze status on domain state transitions
* network: fix call virNetworkEventLifecycleNew when networkStartNetwork
fail
* Require at least one console for LXC domain
* Do not probe for power mgmt capabilities in lxc emulator
* util: fix releasing pidfile in cleanup
* qemu: stop NBD server after successful migration
* qemu: make sure capability probing process can start
* util: Introduce virPidFileForceCleanupPath
* qemu: make advice from numad available when building commandline
* qemu: Release nbd port from migrationPorts instead of remotePorts
* qemu: better error message when block job can't succeed
* test: Add test to verify helpers used for backing file name parsing
* storage: Fix crash when parsing backing store URI with schema
* remote: fix jump depends on uninitialised value
* qemu_agent: Produce more readable error messages
* qemu: forbid snapshot-delete --children-only on external snapshot
* tests: Add SELINUX_LIBS to fix viridentitytest linker bug
* qemu: migration: Make check for empty hook XML robust
* qemu: restore: Fix restoring of VM when the restore hook returns empty
XML
* util: string: Add helper to check whether string is empty
* virsh: domain: Use global constant for XML file size limit
* qemu: Fix hot unplug of SCSI_HOST device
* qemu: unref cfg after TerminateMachine has been called
* Add virCgroupTerminateMachine stub
* qemu: use systemd's TerminateMachine to kill all processes
* util: Prepare URI formatting for libxml2 >= 2.9.2
* security_selinux: Don't relabel /dev/net/tun
* util: eliminate "use after free" in callers of virNetDevLinkDump
* CVE-2014-7823: dumpxml: security hole with migratable flag
* qemu: x86_64 is good enough for i686
* qemu: Don't compare CPU against host for TCG
* qemu_command: Split qemuBuildCpuArgStr
For info about past maintenance releases, see:
http://wiki.libvirt.org/page/Maintenance_Releases
Thanks,
Cole
10 years
[libvirt] [PATCH] qemu: fix cannot get a hot-unplug disk blockdevio settings
by Luyao Huang
When we try to get a hot-unplug disk blkdevio settings via
qemuDomainGetBlockIoTune, libvirt will output a cannot find
device error.Move the check after confirm vm is running.
Signed-off-by: Luyao Huang <lhuang(a)redhat.com>
---
src/qemu/qemu_driver.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 411179d..c717c76 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -17031,12 +17031,11 @@ qemuDomainGetBlockIoTune(virDomainPtr dom,
goto endjob;
}
- device = qemuDiskPathToAlias(vm, disk, NULL);
- if (!device) {
- goto endjob;
- }
-
if (flags & VIR_DOMAIN_AFFECT_LIVE) {
+ device = qemuDiskPathToAlias(vm, disk, NULL);
+ if (!device) {
+ goto endjob;
+ }
qemuDomainObjEnterMonitor(driver, vm);
ret = qemuMonitorGetBlockIoThrottle(priv->mon, device, &reply, supportMaxOptions);
qemuDomainObjExitMonitor(driver, vm);
--
1.8.3.1
10 years
[libvirt] [PATCH 0/2] Add missing check and test for new blkdeviotune parameters
by John Ferlan
Found missing 'size_iops_sec' check in qemu_command.c.
Add a test for the new blkdeviotune parameters.
John Ferlan (2):
qemu: Add checks for blkdeviotune 'size_iops_sec' and adjust error
qemu: Add tests for new blkdeviotune arguments
src/qemu/qemu_command.c | 10 +++--
.../qemuxml2argv-blkdeviotune-max.args | 12 +++++
.../qemuxml2argv-blkdeviotune-max.xml | 51 ++++++++++++++++++++++
tests/qemuxml2argvtest.c | 3 ++
4 files changed, 72 insertions(+), 4 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-blkdeviotune-max.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-blkdeviotune-max.xml
--
1.9.3
10 years