[libvirt] [PATCH 0/2] Fix interface pool problems
by Laine Stump
Each of these has an associated bugzilla record; 1/2 against RHEL6 and
2/2 against RHEL7, but both bugs exist in all versions of libvirt that
support the <pf dev='xyz'/> element. 1/2 is more serious as it can
lead to a crash, while 2/2 just changes the timing of error
reporting.the discovery of bad configurations.
Laine Stump (2):
network: make networkCreateInterfacePool more robust
network: populate interface pool immediately when network is started
src/network/bridge_driver.c | 179 ++++++++++++++++++++++++++------------------
1 file changed, 107 insertions(+), 72 deletions(-)
--
1.9.3
10 years, 3 months
[libvirt] [python-PATCH] Fix libvirt_longlongWrap returning a very large value
by Wang Rui
From: Zhou Yimin <zhouyimin(a)huawei.com>
If hypervisor is not Xen, the errs in struct _virDomainBlockStats will be -1.
But in KVM when we call domain.blockStats(), errs is 18446744073709551615.
To fix that, this patch has two changes:
1. Replace use of the PyLong_FromUnsignedLongLong with PyLong_FromLongLong
in function libvirt_longlongWrap
2. If the paramemter of libvirt_longlongWrap is unsigned long long,
use libvirt_ulonglongWrap instead because of above change.
After this patch, errs is -1 which is consistent with virDomainBlockStats api.
Signed-off-by: Zhou Yimin <zhouyimin(a)huawei.com>
Signed-off-by: Wang Rui <moon.wangrui(a)huawei.com>
---
libvirt-override.c | 18 +++++++++---------
typewrappers.c | 2 +-
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/libvirt-override.c b/libvirt-override.c
index ed5e9e4..b2271ae 100644
--- a/libvirt-override.c
+++ b/libvirt-override.c
@@ -1625,7 +1625,7 @@ libvirt_virDomainGetVcpus(PyObject *self ATTRIBUTE_UNUSED,
PyTuple_SetItem(info, 1, item) < 0)
goto itemError;
- if ((item = libvirt_longlongWrap((long long)cpuinfo[i].cpuTime)) == NULL ||
+ if ((item = libvirt_ulonglongWrap(cpuinfo[i].cpuTime)) == NULL ||
PyTuple_SetItem(info, 2, item) < 0)
goto itemError;
@@ -2794,7 +2794,7 @@ libvirt_virDomainGetInfo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
PyList_SetItem(py_retval, 2, libvirt_ulongWrap(info.memory));
PyList_SetItem(py_retval, 3, libvirt_intWrap((int) info.nrVirtCpu));
PyList_SetItem(py_retval, 4,
- libvirt_longlongWrap((unsigned long long) info.cpuTime));
+ libvirt_ulonglongWrap(info.cpuTime));
return py_retval;
}
@@ -2849,7 +2849,7 @@ libvirt_virDomainGetControlInfo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args)
py_retval = PyList_New(3);
PyList_SetItem(py_retval, 0, libvirt_intWrap(info.state));
PyList_SetItem(py_retval, 1, libvirt_intWrap(info.details));
- PyList_SetItem(py_retval, 2, libvirt_longlongWrap(info.stateTime));
+ PyList_SetItem(py_retval, 2, libvirt_ulonglongWrap(info.stateTime));
return py_retval;
}
@@ -3354,7 +3354,7 @@ libvirt_virNodeGetCellsFreeMemory(PyObject *self ATTRIBUTE_UNUSED, PyObject *arg
py_retval = PyList_New(c_retval);
for (i = 0; i < c_retval; i++) {
PyList_SetItem(py_retval, i,
- libvirt_longlongWrap((long long) freeMems[i]));
+ libvirt_ulonglongWrap(freeMems[i]));
}
VIR_FREE(freeMems);
return py_retval;
@@ -3794,11 +3794,11 @@ libvirt_virStoragePoolGetInfo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
PyList_SetItem(py_retval, 0, libvirt_intWrap((int) info.state));
PyList_SetItem(py_retval, 1,
- libvirt_longlongWrap((unsigned long long) info.capacity));
+ libvirt_ulonglongWrap(info.capacity));
PyList_SetItem(py_retval, 2,
- libvirt_longlongWrap((unsigned long long) info.allocation));
+ libvirt_ulonglongWrap(info.allocation));
PyList_SetItem(py_retval, 3,
- libvirt_longlongWrap((unsigned long long) info.available));
+ libvirt_ulonglongWrap(info.available));
return py_retval;
}
@@ -3825,9 +3825,9 @@ libvirt_virStorageVolGetInfo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
return VIR_PY_NONE;
PyList_SetItem(py_retval, 0, libvirt_intWrap((int) info.type));
PyList_SetItem(py_retval, 1,
- libvirt_longlongWrap((unsigned long long) info.capacity));
+ libvirt_ulonglongWrap(info.capacity));
PyList_SetItem(py_retval, 2,
- libvirt_longlongWrap((unsigned long long) info.allocation));
+ libvirt_ulonglongWrap(info.allocation));
return py_retval;
}
diff --git a/typewrappers.c b/typewrappers.c
index a5b562d..5399fb7 100644
--- a/typewrappers.c
+++ b/typewrappers.c
@@ -79,7 +79,7 @@ PyObject *
libvirt_longlongWrap(long long val)
{
PyObject *ret;
- ret = PyLong_FromUnsignedLongLong((unsigned long long) val);
+ ret = PyLong_FromLongLong(val);
return ret;
}
--
1.7.12.4
10 years, 3 months
[libvirt] [PATCH 0/4] Wrong allocation size displayed for NFS volumes
by John Ferlan
https://bugzilla.redhat.com/show_bug.cgi?id=1077068
The virsh vol-info (and virsh domblkinfo) commands return an incorrect
size if the target device is an NFS volume. These patches will add a
check for the target being NFS and rather than calculate the size based
on "st_blocks" and "DEV_BSIZE" (512) use the "st_size" value instead.
John Ferlan (4):
virfile: Split virFileGetFSFtype
virfile: Introduce virFileIsNFSFSType
vol-info: Check for NFS FS type
domblkinfo: Check for NFS FS Type
src/libvirt_private.syms | 1 +
src/qemu/qemu_driver.c | 7 ++++--
src/storage/storage_backend.c | 7 ++++--
src/util/virfile.c | 53 +++++++++++++++++++++++++++++++++++--------
src/util/virfile.h | 1 +
5 files changed, 55 insertions(+), 14 deletions(-)
--
1.9.3
10 years, 3 months
[libvirt] [PATCHv2] numatune: Fix parsing of empty nodeset (0,^0)
by Erik Skultety
Resolves https://bugzilla.redhat.com/show_bug.cgi?id=1121837
---
Notes:
Version 2:
- reject empty bitmaps while parsing instead of just rejecting nodesets
src/util/virbitmap.c | 3 +++
tests/qemuxml2argvtest.c | 1 +
2 files changed, 4 insertions(+)
diff --git a/src/util/virbitmap.c b/src/util/virbitmap.c
index 27282df..b6bd074 100644
--- a/src/util/virbitmap.c
+++ b/src/util/virbitmap.c
@@ -378,6 +378,9 @@ virBitmapParse(const char *str,
}
}
+ if (virBitmapIsAllClear(*bitmap))
+ goto error;
+
return virBitmapCountBits(*bitmap);
error:
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 1c121ff..62b969c 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -1210,6 +1210,7 @@ mymain(void)
DO_TEST("cputune-zero-shares", QEMU_CAPS_NAME);
DO_TEST("numatune-memory", NONE);
+ DO_TEST_PARSE_ERROR("numatune-memory-invalid-nodeset", NONE);
DO_TEST("numatune-memnode", QEMU_CAPS_NUMA, QEMU_CAPS_OBJECT_MEMORY_RAM);
DO_TEST_FAILURE("numatune-memnode", NONE);
--
1.9.3
10 years, 3 months
[libvirt] [PATCH] conf: Format interface's driver more frequently
by Michal Privoznik
There's this <driver/> element under <interface/> which can have
several attributes. However, the driver element is currently formated
only if the driver's name or txmode has been specified. This makes
only a little sense as we parse even partial <driver/>, for instance:
<interface type='user'>
<mac address='52:54:00:e5:48:58'/>
<model type='virtio'/>
<driver ioeventfd='on' event_idx='on' queues='5'/>
</interface>
But such XML would never get formatted back.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/conf/domain_conf.c | 4 +-
.../qemuxml2argv-interface-driver.xml | 51 ++++++++++++++++++++++
tests/qemuxml2xmltest.c | 1 +
3 files changed, 55 insertions(+), 1 deletion(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-interface-driver.xml
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index c7016f3..934f6cb 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -16286,7 +16286,9 @@ virDomainNetDefFormat(virBufferPtr buf,
virBufferEscapeString(buf, "<model type='%s'/>\n",
def->model);
if (STREQ(def->model, "virtio") &&
- (def->driver.virtio.name || def->driver.virtio.txmode)) {
+ (def->driver.virtio.name || def->driver.virtio.txmode ||
+ def->driver.virtio.ioeventfd || def->driver.virtio.event_idx ||
+ def->driver.virtio.queues)) {
virBufferAddLit(buf, "<driver");
if (def->driver.virtio.name) {
virBufferAsprintf(buf, " name='%s'",
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-interface-driver.xml b/tests/qemuxml2argvdata/qemuxml2argv-interface-driver.xml
new file mode 100644
index 0000000..ec5ab61
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-interface-driver.xml
@@ -0,0 +1,51 @@
+<domain type='qemu'>
+ <name>test</name>
+ <uuid>15d091de-0181-456b-9554-e4382dc1f1ab</uuid>
+ <memory unit='KiB'>1048576</memory>
+ <currentMemory unit='KiB'>1048576</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc-0.13'>hvm</type>
+ <boot dev='cdrom'/>
+ <boot dev='hd'/>
+ <bootmenu enable='yes'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='file' device='disk'>
+ <driver name='qemu' type='qcow2' event_idx='on'/>
+ <source file='/var/lib/libvirt/images/f14.img'/>
+ <target dev='vda' bus='virtio'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
+ </disk>
+ <disk type='file' device='cdrom'>
+ <driver name='qemu' type='raw'/>
+ <source file='/var/lib/libvirt/Fedora-14-x86_64-Live-KDE.iso'/>
+ <target dev='hdc' bus='ide'/>
+ <readonly/>
+ <address type='drive' controller='0' bus='1' target='0' unit='0'/>
+ </disk>
+ <controller type='usb' index='0'/>
+ <controller type='virtio-serial' index='0'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
+ </controller>
+ <controller type='ide' index='0'/>
+ <controller type='pci' index='0' model='pci-root'/>
+ <interface type='user'>
+ <mac address='52:54:00:e5:48:58'/>
+ <model type='virtio'/>
+ <driver ioeventfd='on' event_idx='on' queues='5'/>
+ </interface>
+ <serial type='pty'>
+ <target port='0'/>
+ </serial>
+ <console type='pty'>
+ <target type='serial' port='0'/>
+ </console>
+ <memballoon model='virtio'/>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index 7d416d0..5941323 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -299,6 +299,7 @@ mymain(void)
DO_TEST("lease");
DO_TEST("event_idx");
DO_TEST("vhost_queues");
+ DO_TEST("interface-driver");
DO_TEST("virtio-lun");
DO_TEST("usb-redir");
--
1.8.5.5
10 years, 3 months
[libvirt] [PATCH 1/1] numatune: Fix parsing of empty nodeset (0, ^0)
by Erik Skultety
Resolves https://bugzilla.redhat.com/show_bug.cgi?id=1121837
---
src/conf/numatune_conf.c | 18 +++++++++++--
...emuxml2argv-numatune-memory-invalid-nodeset.xml | 31 ++++++++++++++++++++++
tests/qemuxml2argvtest.c | 1 +
3 files changed, 48 insertions(+), 2 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-numatune-memory-invalid-nodeset.xml
diff --git a/src/conf/numatune_conf.c b/src/conf/numatune_conf.c
index 48d1d04..9d7959a 100644
--- a/src/conf/numatune_conf.c
+++ b/src/conf/numatune_conf.c
@@ -182,6 +182,12 @@ virDomainNumatuneNodeParseXML(virDomainNumatunePtr *numatunePtr,
if (virBitmapParse(tmp, 0, &mem_node->nodeset,
VIR_DOMAIN_CPUMASK_LEN) < 0)
goto cleanup;
+
+ if (virBitmapIsAllClear(mem_node->nodeset)) {
+ virReportError(VIR_ERR_XML_ERROR, "%s",
+ _("Numatune memory nodeset is empty"));
+ goto cleanup;
+ }
VIR_FREE(tmp);
}
@@ -264,8 +270,16 @@ virDomainNumatuneParseXML(virDomainNumatunePtr *numatunePtr,
VIR_FREE(tmp);
tmp = virXMLPropString(node, "nodeset");
- if (tmp && virBitmapParse(tmp, 0, &nodeset, VIR_DOMAIN_CPUMASK_LEN) < 0)
- goto cleanup;
+ if (tmp) {
+ if (virBitmapParse(tmp, 0, &nodeset, VIR_DOMAIN_CPUMASK_LEN) < 0)
+ goto cleanup;
+
+ if (virBitmapIsAllClear(nodeset)) {
+ virReportError(VIR_ERR_XML_ERROR, "%s",
+ _("Numatune memory nodeset is empty"));
+ goto cleanup;
+ }
+ }
VIR_FREE(tmp);
if (virDomainNumatuneSet(numatunePtr,
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-numatune-memory-invalid-nodeset.xml b/tests/qemuxml2argvdata/qemuxml2argv-numatune-memory-invalid-nodeset.xml
new file mode 100644
index 0000000..d2b41b4
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-numatune-memory-invalid-nodeset.xml
@@ -0,0 +1,31 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory unit='KiB'>219136</memory>
+ <currentMemory unit='KiB'>219136</currentMemory>
+ <vcpu placement='static' cpuset='0-1'>2</vcpu>
+ <numatune>
+ <memory mode="strict" nodeset="0,^0"/>
+ </numatune>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <cpu>
+ <topology sockets='2' cores='1' threads='1'/>
+ </cpu>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-kvm</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda' bus='ide'/>
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+ </disk>
+ <controller type='ide' index='0'/>
+ <memballoon model='virtio'/>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 1c121ff..62b969c 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -1210,6 +1210,7 @@ mymain(void)
DO_TEST("cputune-zero-shares", QEMU_CAPS_NAME);
DO_TEST("numatune-memory", NONE);
+ DO_TEST_PARSE_ERROR("numatune-memory-invalid-nodeset", NONE);
DO_TEST("numatune-memnode", QEMU_CAPS_NUMA, QEMU_CAPS_OBJECT_MEMORY_RAM);
DO_TEST_FAILURE("numatune-memnode", NONE);
--
1.9.3
10 years, 3 months
[libvirt] [PATCH libvirt 0/6] Add support for qemu usb-mtp device
by Giuseppe Scrivano
This series adds support for qemu usb-mtp devices.
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1121781
Giuseppe Scrivano (6):
conf: add MTP filesystem support to the parser
conf, virDomainFSDefPtr: rename "path" argument to "target"
qemu_command: fix block indentation
qemu: add support for MTP filesystem
docs: add documentation and schema for MTP filesystem type
tests: add tests for MTP filesystem
docs/formatdomain.html.in | 9 +++++
docs/schemas/domaincommon.rng | 15 ++++++--
src/conf/domain_conf.c | 38 +++++++++++++------
src/conf/domain_conf.h | 3 +-
src/qemu/qemu_command.c | 67 +++++++++++++++++++---------------
tests/domainconfdata/getfilesystem.xml | 4 ++
tests/domainconftest.c | 2 +
7 files changed, 93 insertions(+), 45 deletions(-)
--
1.9.3
10 years, 3 months
[libvirt] [PATCH v1 0/3] OVMF exposure
by Michal Privoznik
Not so long ago, QEMU introduced support for UEFI instead of
standard BIOS. Our domain XML needs to be adjusted, however.
Users are expected to use mainly OVMF which works in two modes:
1) UEFI code and UEFI variables are mixed in one file
2) The code and variables are split in two separate files
For the case number one we are almost ready. The second case,
however, needs more changes on our side. Especially if you
consider fact, that the UEFI code can be shared among multiple
domains while the variables store can't.
Michal Privoznik (3):
conf: Extend <loader/> and introduce <nvram/>
qemu: Implement extended loader and nvram
qemu: Automatically create NVRAM store
configure.ac | 27 +++++
docs/formatdomain.html.in | 19 +++-
docs/schemas/domaincommon.rng | 21 ++++
libvirt.spec.in | 2 +
src/Makefile.am | 1 +
src/conf/domain_conf.c | 87 +++++++++++++-
src/conf/domain_conf.h | 22 +++-
src/libvirt_private.syms | 3 +
src/qemu/libvirtd_qemu.aug | 3 +
src/qemu/qemu.conf | 9 ++
src/qemu/qemu_command.c | 87 +++++++++++++-
src/qemu/qemu_conf.c | 8 ++
src/qemu/qemu_conf.h | 3 +
src/qemu/qemu_process.c | 125 +++++++++++++++++++++
src/qemu/test_libvirtd_qemu.aug.in | 1 +
src/security/security_dac.c | 8 ++
src/security/security_selinux.c | 8 ++
src/security/virt-aa-helper.c | 4 +-
src/vbox/vbox_tmpl.c | 7 +-
src/xenapi/xenapi_driver.c | 3 +-
src/xenxs/xen_sxpr.c | 16 +--
src/xenxs/xen_xm.c | 8 +-
.../qemuxml2argvdata/qemuxml2argv-bios-nvram.args | 10 ++
tests/qemuxml2argvdata/qemuxml2argv-bios-nvram.xml | 40 +++++++
tests/qemuxml2argvtest.c | 2 +
.../qemuxml2xmlout-pci-bridge-many-disks.xml | 2 +-
tests/qemuxml2xmltest.c | 2 +
tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-empty-kernel.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-force-hpet.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-force-nohpet.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-kernel.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-legacy-vfb.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-localtime.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-net-ioemu.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-net-netfront.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-parallel-tcp.xml | 2 +-
.../sexpr2xml-fv-serial-dev-2-ports.xml | 2 +-
.../sexpr2xml-fv-serial-dev-2nd-port.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-serial-file.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-serial-null.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-serial-pipe.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-serial-pty.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-serial-stdio.xml | 2 +-
.../sexpr2xml-fv-serial-tcp-telnet.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-serial-tcp.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-serial-udp.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-serial-unix.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-sound-all.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-sound.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-utc.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv-v2.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-fv.xml | 2 +-
tests/sexpr2xmldata/sexpr2xml-no-source-cdrom.xml | 2 +-
tests/xmconfigdata/test-escape-paths.xml | 2 +-
tests/xmconfigdata/test-fullvirt-force-hpet.xml | 2 +-
tests/xmconfigdata/test-fullvirt-force-nohpet.xml | 2 +-
tests/xmconfigdata/test-fullvirt-localtime.xml | 2 +-
tests/xmconfigdata/test-fullvirt-net-ioemu.xml | 2 +-
tests/xmconfigdata/test-fullvirt-net-netfront.xml | 2 +-
tests/xmconfigdata/test-fullvirt-new-cdrom.xml | 2 +-
tests/xmconfigdata/test-fullvirt-old-cdrom.xml | 2 +-
tests/xmconfigdata/test-fullvirt-parallel-tcp.xml | 2 +-
.../test-fullvirt-serial-dev-2-ports.xml | 2 +-
.../test-fullvirt-serial-dev-2nd-port.xml | 2 +-
tests/xmconfigdata/test-fullvirt-serial-file.xml | 2 +-
tests/xmconfigdata/test-fullvirt-serial-null.xml | 2 +-
tests/xmconfigdata/test-fullvirt-serial-pipe.xml | 2 +-
tests/xmconfigdata/test-fullvirt-serial-pty.xml | 2 +-
tests/xmconfigdata/test-fullvirt-serial-stdio.xml | 2 +-
.../test-fullvirt-serial-tcp-telnet.xml | 2 +-
tests/xmconfigdata/test-fullvirt-serial-tcp.xml | 2 +-
tests/xmconfigdata/test-fullvirt-serial-udp.xml | 2 +-
tests/xmconfigdata/test-fullvirt-serial-unix.xml | 2 +-
tests/xmconfigdata/test-fullvirt-sound.xml | 2 +-
tests/xmconfigdata/test-fullvirt-usbmouse.xml | 2 +-
tests/xmconfigdata/test-fullvirt-usbtablet.xml | 2 +-
tests/xmconfigdata/test-fullvirt-utc.xml | 2 +-
tests/xmconfigdata/test-no-source-cdrom.xml | 2 +-
tests/xmconfigdata/test-pci-devs.xml | 2 +-
82 files changed, 556 insertions(+), 82 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-bios-nvram.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-bios-nvram.xml
--
1.8.5.5
10 years, 3 months
[libvirt] Lifecycle events during reboot for KVM and Xen
by Thomas Bechtold
Hi,
during debugging a problem[1] of Openstack Nova I recognized the following:
Doing a reboot (from inside of the VM with "reboot" command) on a kvm VM
doesn't send any lifecycle events (events debugged with [2]).
Doing the same thing with a xen VM leads to 2 events: First a
VIR_DOMAIN_EVENT_STOPPED and then a VIR_DOMAIN_EVENT_STARTED event.
The problem here is that for the xen case it doesn't seem to be possible
to recognize that a reboot is ongoing. For that reason the OpenStack
Nova component just forces the domain to stop after receiving the
VIR_DOMAIN_EVENT_STOPPED event.
Is it expected that the 2 drivers send different events for the same
action or a bug in qemu/xen/libvirt?
Cheers,
Tom
[1] https://bugs.launchpad.net/nova/+bug/1293480
[2] https://gist.github.com/toabctl/53f26989ad7634a3168b
10 years, 3 months
[libvirt] qemu driver fails to load on Xen after be0782e1
by Jim Fehlig
Until recently, the qemu driver has always succeeded in loading even on
a system booted to Xen. Commit be0782e1 broke this, hence libvirtd no
longer loads
xendom0 # /usr/sbin/libvirtd -l
2014-08-04 22:27:31.586+0000: 35859: info : libvirt version: 1.2.8
2014-08-04 22:27:31.586+0000: 35859: error :
virFileGetDefaultHugepageSize:2958 : internal error: Unable to parse
/proc/meminfo
2014-08-04 22:27:31.586+0000: 35859: error : virStateInitialize:749 :
Initialization of QEMU state driver failed: internal error: Unable to
parse /proc/meminfo
2014-08-04 22:27:31.586+0000: 35859: error : daemonRunStateInit:922 :
Driver state initialization failed
Problem is the Xen kernel does not provide any huge page info in
/proc/meminfo
xendom0 # cat /proc/meminfo | grep -i huge
xendom0 #
Michal, short of always building with '--without-qemu' on a Xen system,
is it possible to make detection of huge pages less fatal wrt loading
the qemu driver?
Regards,
Jim
10 years, 3 months