[libvirt] [PATCH v2 0/8] Add ability to store notes with domains
by Peter Krempa
I've reworked this patches to use a separate element for storing the
short note. This v2 also contains som new patches, especially added
support for the LXC driver, and optionaly API to get the description.
(See patches marked as optional). These are not required, just add
a helper api to get the description and it's usage in virsh.
v2 patches:
xml: Add element <title> to allow short description of domains
api: Add api to set domain title and description in runtime
qemu: Implement note API in qemu driver
virsh: Add support for modifying domain description and titles
v1 patches:
lxc: implement description API in LXC driver.
api: Add API to get domain title and description (optional)
lxc, qemu: Add support for virDomainGetDescription (optional)
virsh: Add support for virDomainGetDescription api (optional)
docs/formatdomain.html.in | 6 +
docs/schemas/domaincommon.rng | 13 +-
include/libvirt/libvirt.h.in | 13 +
src/conf/domain_conf.c | 19 ++
src/conf/domain_conf.h | 1 +
src/driver.h | 9 +
src/libvirt.c | 92 +++++++
src/libvirt_public.syms | 6 +
src/lxc/lxc_driver.c | 139 ++++++++++
src/qemu/qemu_driver.c | 139 ++++++++++
src/remote/remote_driver.c | 2 +
src/remote/remote_protocol.x | 19 ++-
.../qemu-simple-description-title.xml | 27 ++
tests/qemuxml2argvdata/qemuxml2argv-minimal.xml | 5 +
tools/virsh.c | 268 ++++++++++++++++++--
tools/virsh.pod | 34 +++-
16 files changed, 769 insertions(+), 23 deletions(-)
create mode 100644 tests/domainschemadata/qemu-simple-description-title.xml
--
1.7.3.4
12 years, 11 months
[libvirt] [BUG] EPOLL_CLOEXEC undeclared
by Philipp Hahn
Hi,
$ cat /etc/debian_version
5.0.1
$ dpkg -S eventpoll.h
linux-libc-dev: /usr/include/linux/eventpoll.h
$ dpkg-query -W linux-libc-dev
linux-libc-dev 2.6.32-35~ucs1.48.201109051614
$ git describe
v0.9.9-57-g7eb9cfd
$ ./autogen.sh ; make
...
(cd .libs && rm -f libvirt_test.la && ln -s ../libvirt_test.la
libvirt_test.la)
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I.. -I../gnulib/lib -I../gnulib/lib -I../include -I../src/util -I../include -DIN_LIBVIRT -I../src/conf -I/usr/include/libxml2 -Wall -W -Wformat-y2k -Wformat-security -Winit-self -Wmissing-include-dirs -Wunused -Wunknown-pragmas -Wstrict-aliasing -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wwrite-strings -Wlogical-op -Waggregate-return -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn -Wmissing-format-attribute -Wredundant-decls -Wnested-externs -Winline -Winvalid-pch -Wvolatile-register-var -Wdisabled-optimization -Wattributes -Wcoverage-mismatch -Wmultichar -Wdeprecated-declarations -Wdiv-by-zero -Wendif-labels -Wextra -Wformat-contains-nul -Wformat-extra-args -Wformat-zero-length -Wformat=2 -Wmultichar -Wnormalized=nfc -Woverflow -Wpointer-to-int-cast -Wpragmas -Wno-missing-field-initializers -Wno-sign-compare -Wno-format-nonliteral -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-all --param=ssp-buffer-size=4 -fexceptions -fasynchronous-unwind-tables -fdiagnostics-show-option -funit-at-a-time -fipa-pure-const -g -O2 -MT
libvirt_lxc-lxc_controller.o -MD -MP -MF .deps/libvirt_lxc-lxc_controller.Tpo -c -o
libvirt_lxc-lxc_controller.o `test -f 'lxc/lxc_controller.c' ||
echo './'`lxc/lxc_controller.c
lxc/lxc_controller.c: In function 'lxcControllerMain':
lxc/lxc_controller.c:1176: warning: implicit declaration of
function 'epoll_create1'
lxc/lxc_controller.c:1176: warning: nested extern declaration
of 'epoll_create1' [-Wnested-externs]
lxc/lxc_controller.c:1176: error: 'EPOLL_CLOEXEC' undeclared (first use in
this function)
lxc/lxc_controller.c:1176: error: (Each undeclared identifier is reported only
once
lxc/lxc_controller.c:1176: error: for each function it appears in.)
make[3]: *** [libvirt_lxc-lxc_controller.o] Error 1
make[3]: Leaving directory `/root/libvirt/src'
...
$ git show v0.9.9-32-g9130396 | head -5
commit 9130396214975ba2251082f943c9717281039050
Author: Daniel P. Berrange <berrange(a)redhat.com>
Date: Thu Jan 12 17:03:03 2012 +0000
Re-write LXC controller end-of-file I/O handling yet again
Sincerely
Philipp
--
Philipp Hahn Open Source Software Engineer hahn(a)univention.de
Univention GmbH Linux for Your Business fon: +49 421 22 232- 0
Mary-Somerville-Str.1 D-28359 Bremen fax: +49 421 22 232-99
http://www.univention.de/
12 years, 11 months
[libvirt] [PATCH] xen: Don't crash when we fail to init caps
by Guido Günther
by dereferencing a NULL pointer in the call to
virNodeSuspendGetTargetMask.
Only warn but Don't set an error to not overwrite an error code set by
xenHypervisorMakeCapabilities.
---
src/xen/xen_hypervisor.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/src/xen/xen_hypervisor.c b/src/xen/xen_hypervisor.c
index 2bb3466..855576c 100644
--- a/src/xen/xen_hypervisor.c
+++ b/src/xen/xen_hypervisor.c
@@ -2764,6 +2764,10 @@ xenHypervisorMakeCapabilities(virConnectPtr conn)
utsname.machine,
cpuinfo,
capabilities);
+ if (caps == NULL) {
+ VIR_WARN("Failed to get host capabilities");
+ return NULL;
+ }
if (virNodeSuspendGetTargetMask(&caps->host.powerMgmt) < 0)
VIR_WARN("Failed to get host power management capabilities");
--
1.7.8.3
12 years, 11 months
[libvirt] [PATCH 0/2] consistent use of _LAST enum markers
by Eric Blake
This patch series will make it harder to add an enum value
while forgetting to translate that enum to or from an
appropriate string value. It also alters the public API
so that users don't get _LAST enum values unless they ask
for them, since such values are markers that might change
over time rather than an official unchanging API value.
Eric Blake (2):
API: make declaration of _LAST enum values conditional
maint: enforce use of _LAST marker
cfg.mk | 12 +++-
daemon/libvirtd.h | 8 +-
include/libvirt/libvirt.h.in | 186 ++++++++++++++++++++++++++++++++++++-----
python/generator.py | 3 +-
src/conf/domain_conf.c | 2 +-
src/conf/domain_conf.h | 3 +-
src/internal.h | 4 +
src/qemu/qemu_monitor_json.c | 9 +-
src/remote/remote_protocol.x | 3 +-
src/util/virtypedparam.c | 2 +-
tests/cputest.c | 3 +-
tools/virsh.c | 9 ++
12 files changed, 207 insertions(+), 37 deletions(-)
--
1.7.7.5
12 years, 11 months
[libvirt] Can't compile libvirt 0.9.9 (complains about apparmor)
by Jean-Philippe Menil
Hi,
I need to compile libvirt 0.9.9 to work with qemu-kvm 1.0.
I use to compile libvirt without apparmor or selinux, but this time,
with the newer version, it seems that i can't compile with the following
options:
./configure --disable-rpath --with-qemu=yes
--with-qemu-user=libvirt-qemu --with-qemu-group=kvm
--with-init-script=none --without-xen-inotify --without-uml
--without-vmware --without-libssh2 --without-phyp --without-xenapi
--without-libxl --without-esx --without-hyperv --without-test
--without-remote --without-sasl --without-yajl --without-sanlock
--without-polkit --without-avahi --without-audit --without-dtrace
--without-numactl --without-capng --without-network --without-netcf
--without-secrets --without-storage-lvm --without-storage-dir
--without-storage-fs --without-storage-iscsi --without-storage-scsi
--without-storage-mpath --without-storage-disk --without-python
--without-driver-modules --without-hal --without-udev --without-libblkid
--without-virtualport --without-macvtap --enable-debug=n --without-xen
--without-vbox --without-lxc --without-openvz --with-driver-modules=no
--without-apparmor --without-secdriver-apparmor --without-selinux
--without-secdriver-selinux
Relevant error is :
configure:54338: error: You must install the AppArmor development
package in order to compile libvirt
Note that, if i compile with the option "with-apparmor", configure works
fine, and i haven't any errors.
Is it possible to compile libvirt without apparmor?
Best regards.
--
Jean-Philippe Menil - Pôle réseau Service IRTS
DSI Université de Nantes
jean-philippe.menil(a)univ-nantes.fr
Tel : 02.53.48.49.27 - Fax : 02.53.48.49.09
12 years, 11 months
[libvirt] [PATCH] xen: properly report out of memory when hvm_type is too small
by Guido Günther
---
src/xen/xen_hypervisor.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/xen/xen_hypervisor.c b/src/xen/xen_hypervisor.c
index 855576c..51b92d3 100644
--- a/src/xen/xen_hypervisor.c
+++ b/src/xen/xen_hypervisor.c
@@ -2598,7 +2598,7 @@ xenHypervisorMakeCapabilitiesInternal(virConnectPtr conn,
&line[subs[1].rm_so],
subs[1].rm_eo-subs[1].rm_so,
sizeof(hvm_type)) == NULL)
- return NULL;
+ goto no_memory;
} else if (regexec (&flags_pae_rec, line, 0, NULL, 0) == 0)
host_pae = 1;
}
--
1.7.8.3
12 years, 11 months
[libvirt] [PATCH 1/2] virsh: extend domif-{get, set}link command to accept target name as a parameter
by Taku Izumi
Other virsh domifXXX commands can accept target name
as a parameter to specify interface. From viewpoint of
consistency, virsh domif-getlink command should accept
target name as a parameter. This patch achieves this.
Signed-off-by: Taku Izumi <izumi.taku(a)jp.fujitsu.com>
---
tools/virsh.c | 25 ++++++++++++++++++-------
tools/virsh.pod | 3 ++-
2 files changed, 20 insertions(+), 8 deletions(-)
Index: libvirt/tools/virsh.c
===================================================================
--- libvirt.orig/tools/virsh.c
+++ libvirt/tools/virsh.c
@@ -1509,7 +1509,10 @@ cmdDomIfGetLink (vshControl *ctl, const
const char *iface = NULL;
int flags = 0;
char *state = NULL;
- char *mac = NULL;
+ char *value = NULL;
+ unsigned char macaddr[VIR_MAC_BUFLEN];
+ const char *element;
+ const char *attribute;
bool ret = false;
int i;
char *desc;
@@ -1552,27 +1555,35 @@ cmdDomIfGetLink (vshControl *ctl, const
goto cleanup;
}
+ if (virParseMacAddr(iface, macaddr) == 0) {
+ element = "mac";
+ attribute = "address";
+ } else {
+ element = "target";
+ attribute = "dev";
+ }
+
/* find interface with matching mac addr */
for (i = 0; i < obj->nodesetval->nodeNr; i++) {
cur = obj->nodesetval->nodeTab[i]->children;
while (cur) {
if (cur->type == XML_ELEMENT_NODE &&
- xmlStrEqual(cur->name, BAD_CAST "mac")) {
+ xmlStrEqual(cur->name, BAD_CAST element)) {
- mac = virXMLPropString(cur, "address");
+ value = virXMLPropString(cur, attribute);
- if (STRCASEEQ(mac, iface)){
- VIR_FREE(mac);
+ if (STRCASEEQ(value, iface)){
+ VIR_FREE(value);
goto hit;
}
- VIR_FREE(mac);
+ VIR_FREE(value);
}
cur = cur->next;
}
}
- vshError(ctl, _("Interface with address '%s' not found."), iface);
+ vshError(ctl, _("Interface (%s: %s) not found."), element, iface);
goto cleanup;
hit:
Index: libvirt/tools/virsh.pod
===================================================================
--- libvirt.orig/tools/virsh.pod
+++ libvirt/tools/virsh.pod
@@ -475,10 +475,11 @@ Modify link state of the domain's virtua
state are "up" and "down. If --persistent is specified, only the persistent
configuration of the domain is modified.
-=item B<domif-getlink> I<domain> I<interface-MAC> I<--persistent>
+=item B<domif-getlink> I<domain> I<interface-device> I<--persistent>
Query link state of the domain's virtual interface. If --persistent
is specified, query the persistent configuration.
+I<interface-device> can be the interface's target name or the MAC address.
=item B<domiftune> I<domain> I<interface-device>
[[I<--config>] [I<--live>] | [I<--current>]]
12 years, 11 months
[libvirt] [PATCH] maint: cleanup qemu capabilities
by Eric Blake
Fix inconsistent whitespace and long lines.
* src/qemu/qemu_capabilities.h (qemuCapsFlags): Improve formatting.
---
Pushing under the trivial rule, since this has come up multiple
times this month with people trying to tweak unrelated parts
of this enum while adding new values.
src/qemu/qemu_capabilities.h | 161 +++++++++++++++++++++---------------------
1 files changed, 80 insertions(+), 81 deletions(-)
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index 6a5389e..eae7929 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -29,102 +29,101 @@
/* Internal flags to keep track of qemu command line capabilities */
enum qemuCapsFlags {
- QEMU_CAPS_KQEMU = 0, /* Whether KQEMU is compiled in */
- QEMU_CAPS_VNC_COLON = 1, /* Does the VNC take just port, or address + display */
- QEMU_CAPS_NO_REBOOT = 2, /* Is the -no-reboot flag available */
- QEMU_CAPS_DRIVE = 3, /* Is the new -drive arg available */
- QEMU_CAPS_DRIVE_BOOT = 4, /* Does -drive support boot=on */
- QEMU_CAPS_NAME = 5, /* Is the -name flag available */
- QEMU_CAPS_UUID = 6, /* Is the -uuid flag available */
- QEMU_CAPS_DOMID = 7, /* Xenner only, special -domid flag available */
- QEMU_CAPS_VNET_HDR = 8,
- QEMU_CAPS_MIGRATE_KVM_STDIO = 9, /* Original migration code from KVM. Also had tcp, but we can't use that
- * since it had a design bug blocking the entire monitor console */
- QEMU_CAPS_MIGRATE_QEMU_TCP = 10, /* New migration syntax after merge to QEMU with TCP transport */
- QEMU_CAPS_MIGRATE_QEMU_EXEC = 11, /* New migration syntax after merge to QEMU with EXEC transport */
- QEMU_CAPS_DRIVE_CACHE_V2 = 12, /* Is the cache= flag wanting new v2 values */
- QEMU_CAPS_KVM = 13, /* Whether KVM is compiled in */
- QEMU_CAPS_DRIVE_FORMAT = 14, /* Is -drive format= avail */
- QEMU_CAPS_VGA = 15, /* Is -vga avail */
+ QEMU_CAPS_KQEMU = 0, /* Whether KQEMU is compiled in */
+ QEMU_CAPS_VNC_COLON = 1, /* VNC takes or address + display */
+ QEMU_CAPS_NO_REBOOT = 2, /* Is the -no-reboot flag available */
+ QEMU_CAPS_DRIVE = 3, /* Is the new -drive arg available */
+ QEMU_CAPS_DRIVE_BOOT = 4, /* Does -drive support boot=on */
+ QEMU_CAPS_NAME = 5, /* Is the -name flag available */
+ QEMU_CAPS_UUID = 6, /* Is the -uuid flag available */
+ QEMU_CAPS_DOMID = 7, /* Xenner: -domid flag available */
+ QEMU_CAPS_VNET_HDR = 8,
+ QEMU_CAPS_MIGRATE_KVM_STDIO = 9, /* avoid kvm tcp migration bug */
+ QEMU_CAPS_MIGRATE_QEMU_TCP = 10, /* have qemu tcp migration */
+ QEMU_CAPS_MIGRATE_QEMU_EXEC = 11, /* have qemu exec migration */
+ QEMU_CAPS_DRIVE_CACHE_V2 = 12, /* cache= flag wanting new v2 values */
+ QEMU_CAPS_KVM = 13, /* Whether KVM is compiled in */
+ QEMU_CAPS_DRIVE_FORMAT = 14, /* Is -drive format= avail */
+ QEMU_CAPS_VGA = 15, /* Is -vga avail */
/* features added in qemu-0.10.0 or later */
- QEMU_CAPS_0_10 = 16,
- QEMU_CAPS_NET_NAME = QEMU_CAPS_0_10, /* -net ...,name=str */
- QEMU_CAPS_HOST_NET_ADD = QEMU_CAPS_0_10, /* host_net_add monitor command */
-
- QEMU_CAPS_PCIDEVICE = 17, /* PCI device assignment only supported by qemu-kvm */
- QEMU_CAPS_MEM_PATH = 18, /* mmap'ped guest backing supported */
- QEMU_CAPS_DRIVE_SERIAL = 19, /* -driver serial= available */
- QEMU_CAPS_XEN_DOMID = 20, /* -xen-domid (new style xen integration) */
- QEMU_CAPS_MIGRATE_QEMU_UNIX = 21, /* Does qemu support unix domain sockets for migration? */
- QEMU_CAPS_CHARDEV = 22, /* Is the new -chardev arg available */
- QEMU_CAPS_ENABLE_KVM = 23, /* Is the -enable-kvm flag available to "enable KVM full virtualization support" */
- QEMU_CAPS_MONITOR_JSON = 24, /* JSON mode for monitor */
- QEMU_CAPS_BALLOON = 25, /* -balloon available */
- QEMU_CAPS_DEVICE = 26, /* Is the new -device arg available */
- QEMU_CAPS_SDL = 27, /* Is the new -sdl arg available */
- QEMU_CAPS_SMP_TOPOLOGY = 28, /* Is sockets=s,cores=c,threads=t available for -smp? */
- QEMU_CAPS_NETDEV = 29, /* The -netdev flag & netdev_add/remove monitor commands */
- QEMU_CAPS_RTC = 30, /* The -rtc flag for clock options */
- QEMU_CAPS_VHOST_NET = 31, /* vhost-net support is available in qemu */
- QEMU_CAPS_RTC_TD_HACK = 32, /* -rtc-td-hack available */
- QEMU_CAPS_NO_HPET = 33, /* -no-hpet flag is supported */
- QEMU_CAPS_NO_KVM_PIT = 34, /* -no-kvm-pit-reinjection supported */
- QEMU_CAPS_TDF = 35, /* -tdf flag (user-mode pit catchup) */
- QEMU_CAPS_PCI_CONFIGFD = 36, /* pci-assign.configfd */
- QEMU_CAPS_NODEFCONFIG = 37, /* -nodefconfig */
- QEMU_CAPS_BOOT_MENU = 38, /* -boot menu=on support */
- QEMU_CAPS_ENABLE_KQEMU = 39, /* -enable-kqemu flag */
- QEMU_CAPS_FSDEV = 40, /* -fstype filesystem passthrough */
- QEMU_CAPS_NESTING = 41, /* -enable-nesting (SVM/VMX) */
- QEMU_CAPS_NAME_PROCESS = 42, /* Is -name process= available */
- QEMU_CAPS_DRIVE_READONLY = 43, /* -drive readonly=on|off */
- QEMU_CAPS_SMBIOS_TYPE = 44, /* Is -smbios type= available */
- QEMU_CAPS_VGA_QXL = 45, /* The 'qxl' arg for '-vga' */
- QEMU_CAPS_SPICE = 46, /* Is -spice avail */
- QEMU_CAPS_VGA_NONE = 47, /* The 'none' arg for '-vga' */
- QEMU_CAPS_MIGRATE_QEMU_FD = 48, /* -incoming fd:n */
- QEMU_CAPS_BOOTINDEX = 49, /* -device bootindex property */
- QEMU_CAPS_HDA_DUPLEX = 50, /* -device hda-duplex */
- QEMU_CAPS_DRIVE_AIO = 51, /* -drive aio= supported */
- QEMU_CAPS_PCI_MULTIBUS = 52, /* bus=pci.0 vs bus=pci */
- QEMU_CAPS_PCI_BOOTINDEX = 53, /* pci-assign.bootindex */
- QEMU_CAPS_CCID_EMULATED = 54, /* -device ccid-card-emulated */
- QEMU_CAPS_CCID_PASSTHRU = 55, /* -device ccid-card-passthru */
- QEMU_CAPS_CHARDEV_SPICEVMC = 56, /* newer -chardev spicevmc */
- QEMU_CAPS_DEVICE_SPICEVMC = 57, /* older -device spicevmc*/
- QEMU_CAPS_VIRTIO_TX_ALG = 58, /* -device virtio-net-pci,tx=string */
- QEMU_CAPS_DEVICE_QXL_VGA = 59, /* Is the primary and vga campatible qxl device named qxl-vga? */
- QEMU_CAPS_PCI_MULTIFUNCTION = 60, /* -device multifunction=on|off */
- QEMU_CAPS_VIRTIO_IOEVENTFD = 61, /* IOeventFD feature: virtio-{net|blk}-pci.ioeventfd=on/off */
- QEMU_CAPS_SGA = 62, /* Serial Graphics Adapter */
+ QEMU_CAPS_0_10 = 16,
+ QEMU_CAPS_NET_NAME = QEMU_CAPS_0_10, /* -net ...,name=str */
+ QEMU_CAPS_HOST_NET_ADD = QEMU_CAPS_0_10, /* host_net_add command */
+
+ QEMU_CAPS_PCIDEVICE = 17, /* PCI device assignment supported */
+ QEMU_CAPS_MEM_PATH = 18, /* mmap'ped guest backing supported */
+ QEMU_CAPS_DRIVE_SERIAL = 19, /* -driver serial= available */
+ QEMU_CAPS_XEN_DOMID = 20, /* -xen-domid */
+ QEMU_CAPS_MIGRATE_QEMU_UNIX = 21, /* qemu migration via unix sockets */
+ QEMU_CAPS_CHARDEV = 22, /* Is the new -chardev arg available */
+ QEMU_CAPS_ENABLE_KVM = 23, /* -enable-kvm flag */
+ QEMU_CAPS_MONITOR_JSON = 24, /* JSON mode for monitor */
+ QEMU_CAPS_BALLOON = 25, /* -balloon available */
+ QEMU_CAPS_DEVICE = 26, /* Is the new -device arg available */
+ QEMU_CAPS_SDL = 27, /* Is the new -sdl arg available */
+ QEMU_CAPS_SMP_TOPOLOGY = 28, /* -smp has sockets/cores/threads */
+ QEMU_CAPS_NETDEV = 29, /* -netdev flag & netdev_add/remove */
+ QEMU_CAPS_RTC = 30, /* The -rtc flag for clock options */
+ QEMU_CAPS_VHOST_NET = 31, /* vhost-net support available */
+ QEMU_CAPS_RTC_TD_HACK = 32, /* -rtc-td-hack available */
+ QEMU_CAPS_NO_HPET = 33, /* -no-hpet flag is supported */
+ QEMU_CAPS_NO_KVM_PIT = 34, /* -no-kvm-pit-reinjection supported */
+ QEMU_CAPS_TDF = 35, /* -tdf flag (user-mode pit catchup) */
+ QEMU_CAPS_PCI_CONFIGFD = 36, /* pci-assign.configfd */
+ QEMU_CAPS_NODEFCONFIG = 37, /* -nodefconfig */
+ QEMU_CAPS_BOOT_MENU = 38, /* -boot menu=on support */
+ QEMU_CAPS_ENABLE_KQEMU = 39, /* -enable-kqemu flag */
+ QEMU_CAPS_FSDEV = 40, /* -fstype filesystem passthrough */
+ QEMU_CAPS_NESTING = 41, /* -enable-nesting (SVM/VMX) */
+ QEMU_CAPS_NAME_PROCESS = 42, /* Is -name process= available */
+ QEMU_CAPS_DRIVE_READONLY = 43, /* -drive readonly=on|off */
+ QEMU_CAPS_SMBIOS_TYPE = 44, /* Is -smbios type= available */
+ QEMU_CAPS_VGA_QXL = 45, /* The 'qxl' arg for '-vga' */
+ QEMU_CAPS_SPICE = 46, /* Is -spice avail */
+ QEMU_CAPS_VGA_NONE = 47, /* The 'none' arg for '-vga' */
+ QEMU_CAPS_MIGRATE_QEMU_FD = 48, /* -incoming fd:n */
+ QEMU_CAPS_BOOTINDEX = 49, /* -device bootindex property */
+ QEMU_CAPS_HDA_DUPLEX = 50, /* -device hda-duplex */
+ QEMU_CAPS_DRIVE_AIO = 51, /* -drive aio= supported */
+ QEMU_CAPS_PCI_MULTIBUS = 52, /* bus=pci.0 vs bus=pci */
+ QEMU_CAPS_PCI_BOOTINDEX = 53, /* pci-assign.bootindex */
+ QEMU_CAPS_CCID_EMULATED = 54, /* -device ccid-card-emulated */
+ QEMU_CAPS_CCID_PASSTHRU = 55, /* -device ccid-card-passthru */
+ QEMU_CAPS_CHARDEV_SPICEVMC = 56, /* newer -chardev spicevmc */
+ QEMU_CAPS_DEVICE_SPICEVMC = 57, /* older -device spicevmc*/
+ QEMU_CAPS_VIRTIO_TX_ALG = 58, /* -device virtio-net-pci,tx=string */
+ QEMU_CAPS_DEVICE_QXL_VGA = 59, /* primary qxl device named qxl-vga? */
+ QEMU_CAPS_PCI_MULTIFUNCTION = 60, /* -device multifunction=on|off */
+ QEMU_CAPS_VIRTIO_IOEVENTFD = 61, /* virtio-{net|blk}-pci.ioeventfd=on */
+ QEMU_CAPS_SGA = 62, /* Serial Graphics Adapter */
QEMU_CAPS_VIRTIO_BLK_EVENT_IDX = 63, /* virtio-blk-pci.event_idx */
QEMU_CAPS_VIRTIO_NET_EVENT_IDX = 64, /* virtio-net-pci.event_idx */
QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC = 65, /* Is cache=directsync supported? */
- QEMU_CAPS_PIIX3_USB_UHCI = 66, /* -device piix3-usb-uhci */
- QEMU_CAPS_PIIX4_USB_UHCI = 67, /* -device piix4-usb-uhci */
- QEMU_CAPS_USB_EHCI = 68, /* -device usb-ehci */
- QEMU_CAPS_ICH9_USB_EHCI1 = 69, /* -device ich9-usb-ehci1 and companions */
+ QEMU_CAPS_PIIX3_USB_UHCI = 66, /* -device piix3-usb-uhci */
+ QEMU_CAPS_PIIX4_USB_UHCI = 67, /* -device piix4-usb-uhci */
+ QEMU_CAPS_USB_EHCI = 68, /* -device usb-ehci */
+ QEMU_CAPS_ICH9_USB_EHCI1 = 69, /* -device ich9-usb-ehci1 and friends */
QEMU_CAPS_VT82C686B_USB_UHCI = 70, /* -device vt82c686b-usb-uhci */
- QEMU_CAPS_PCI_OHCI = 71, /* -device pci-ohci */
- QEMU_CAPS_USB_REDIR = 72, /* -device usb-redir */
- QEMU_CAPS_USB_HUB = 73, /* -device usb-hub */
- QEMU_CAPS_NO_SHUTDOWN = 74, /* usable -no-shutdown */
+ QEMU_CAPS_PCI_OHCI = 71, /* -device pci-ohci */
+ QEMU_CAPS_USB_REDIR = 72, /* -device usb-redir */
+ QEMU_CAPS_USB_HUB = 73, /* -device usb-hub */
+ QEMU_CAPS_NO_SHUTDOWN = 74, /* usable -no-shutdown */
QEMU_CAPS_DRIVE_CACHE_UNSAFE = 75, /* Is cache=unsafe supported? */
QEMU_CAPS_PCI_ROMBAR = 76, /* -device rombar=0|1 */
- QEMU_CAPS_ICH9_AHCI = 77, /* -device ich9-ahci */
- QEMU_CAPS_NO_ACPI = 78, /* -no-acpi */
- QEMU_CAPS_FSDEV_READONLY =79, /* -fsdev readonly supported */
+ QEMU_CAPS_ICH9_AHCI = 77, /* -device ich9-ahci */
+ QEMU_CAPS_NO_ACPI = 78, /* -no-acpi */
+ QEMU_CAPS_FSDEV_READONLY = 79, /* -fsdev readonly supported */
QEMU_CAPS_VIRTIO_BLK_SCSI = 80, /* virtio-blk-pci.scsi */
- QEMU_CAPS_VIRTIO_BLK_SG_IO = 81, /* support for SG_IO commands, reportedly added in 0.11 */
+ QEMU_CAPS_VIRTIO_BLK_SG_IO = 81, /* SG_IO commands, since 0.11 */
QEMU_CAPS_DRIVE_COPY_ON_READ = 82, /* -drive copy-on-read */
- QEMU_CAPS_CPU_HOST = 83, /* support for -cpu host */
+ QEMU_CAPS_CPU_HOST = 83, /* support for -cpu host */
QEMU_CAPS_FSDEV_WRITEOUT = 84, /* -fsdev writeout supported */
- QEMU_CAPS_DRIVE_IOTUNE = 85, /* -drive bps= and friends ({b,io}ps{_rd,_wr,}) */
+ QEMU_CAPS_DRIVE_IOTUNE = 85, /* -drive bps= and friends */
QEMU_CAPS_LAST, /* this must always be the last item */
};
--
1.7.7.5
12 years, 11 months
Re: [libvirt] [RFC 0/5]: QMP: add balloon-get-memory-stats command
by Eric Blake
On 01/19/2012 08:56 AM, Luiz Capitulino wrote:
> Long ago, commit 625a5be added the guest provided memory statistics to
> the query-balloon command. Unfortunately, it also introduced a severe
> bug: query-balloon would hang if the guest didn't respond. This, in turn,
> would also cause a hang in libvirt.
>
> Because of that, we decided to disable the guest memory stats feature
> (commit 11724ff).
>
> As we decided to let commands implement ad-hoc async mechanisms until we
> get a proper way to do it, I decided to try to re-enable that feature.
>
> My idea is to have a command and an event. The command gets the process
> started by sending a request to guest and returns. Later, when the guest
> makes the memory stats info available, it's sent to the client by means
> of an QMP event (please, take a look at patch 05/05 for full details).
>
> I'm not sure if that approach is good for libvirt though, so it would be
> very helpful to get their input (Eric, I'm CC'ing you here, but feel free
> to route this to someone else).
[I went ahead and cc'd the libvirt list]
Yes, libvirt can live with this approach. And having this in parallel
to a qemu-ga verb is nice, since, as it was pointed out, this would
allow interaction with guests that have a balloon device but not a guest
agent.
You may want to read this thread [1], for thoughts on the impact of
making another existing blocking command be extended into one that
starts an async event and ends when an event is raised; libvirt can
expose both a blocking and an asynchronous implementation to the user on
top of the qemu model being just asynchronous.
[1] https://www.redhat.com/archives/libvir-list/2012-January/msg00562.html
Thinking aloud - do we need a means to poll the state of the
balloon-stat query? On the one hand, if libvirtd issues the start
command, then gets stopped, then the event occurs, then libvirtd is
restarted, then libvirt won't know that the event was missed. On the
other hand, since this involves guest interaction, libvirt already has
to assume that the guest may be malicious and refuse to report stats
and/or report invalid stats, so libvirt would already have to be
prepared to give up if no event has arrived in a fixed amount of time,
and that also means that restarting libvirtd can just ignore any balloon
query that was in flight before the restart.
So I guess I'm okay with just a start and an event, with no poll of the
last-known guest response. But it does mean that qemu has to gracefully
handle if libvirt makes two start requests in a row without any
intervening events, and conversely that libvirt has to be prepared for
an event that happens even when libvirt doesn't remember triggering the
start command.
> Another interesting point is that, there's another way of doing this and
> it's using qemu-ga instead. That's, qemu-ga could read that information
> from proc and return it. This is easier & simpler, as it doesn't involve
> guest communication. We also could return a lot more information if needed.
> The only disadvantage I can see is the dependency on qemu-ga...
Most likely, we would want to teach libvirt to use both methods, and
give the choice to the user on which approach to use when the guest
supports both.
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
12 years, 11 months