[libvirt] [PATCH 3/4] Explicitly represent balloon device in XML and handle PCI address
Eric Blake
eblake at redhat.com
Tue Jul 20 22:10:50 UTC 2010
On 07/20/2010 07:09 AM, Daniel P. Berrange wrote:
> From: Daniel P. Berrange <dan at berrange.com>
>
> To allow compatability with older QEMU PCI device slot assignment
s/compatability/compatibility/
> it is neccessary to explicitly track the balloon device in the
s/neccessary/necessary/
> XML. This introduces a new device
>
> <memballoon model='virtio|xen'/>
>
> It can also have a PCI address, auto-assigned if neccessary.
s/neccessary/necessary/
>
> The memballoon will be automatically added to all Xen and QEMU
> guests by default.
>
> * docs/schemas/domain.rng: Add <memballoon> element
> * src/conf/domain_conf.c, src/conf/domain_conf.h: parsing
> and formatting for memballoon device. Always add a memory
> balloon device to Xen/QEMU if none exists in XML
> * src/libvirt_private.syms: Export memballoon model APIs
> * src/qemu/qemu_conf.c, src/qemu/qemu_conf.h: Honour the
> PCI device address in memory balloon device
> * tests/*: Update to test new functionality
> ---
> docs/schemas/domain.rng | 16 +++
No change to docs/formatdomain.html.in?
>
> +static virDomainMemballoonDefPtr
> +virDomainMemballoonDefParseXML(const xmlNodePtr node,
> + int flags)
> +{
> + char *model;
> + virDomainMemballoonDefPtr def;
> +
> + if (VIR_ALLOC(def) < 0) {
> + virReportOOMError();
> + return NULL;
> + }
> +
> + model = virXMLPropString(node, "model");
> + if ((def->model = virDomainMemballoonModelTypeFromString(model)) < 0) {
> + virDomainReportError(VIR_ERR_INTERNAL_ERROR,
> + _("unknown memory baloon model '%s'"), model);
s/baloon/balloon/
>
> + /* analysis of the memballoon devices */
> + def->memballoon = NULL;
> + if ((n = virXPathNodeSet("./devices/memballoon", ctxt, &nodes)) < 0) {
> + virDomainReportError(VIR_ERR_INTERNAL_ERROR,
> + "%s", _("cannot extract memballoon devices"));
Do we want to s/memballoon/memory balloon/ in user-visible messages?
> /*
> * This entire method assumes that PCI devices in 'info pci'
> * match ordering of devices specified on the command line
> @@ -2634,7 +2655,7 @@ qemuDetectPCIAddresses(virDomainObjPtr vm,
> continue;
>
> if (qemuAssignNextPCIAddress(&(vm->def->sounds[i]->info),
> - vendor, product,
> + vendor, product,
Why the whitespace change?
> addrs, naddrs) < 0) {
> qemuReportError(VIR_ERR_INTERNAL_ERROR,
> _("cannot find PCI address for sound adapter %s"),
> @@ -2656,6 +2677,18 @@ qemuDetectPCIAddresses(virDomainObjPtr vm,
> }
> }
>
> + if (vm->def->memballoon &&
> + qemuGetPCIMemballoonVendorProduct(vm->def->memballoon, &vendor, &product) == 0) {
> + if (qemuAssignNextPCIAddress(&(vm->def->memballoon->info),
> + vendor, product,
> + addrs, naddrs) < 0) {
s/, /, /
> + qemuReportError(VIR_ERR_INTERNAL_ERROR,
> + _("cannot find PCI address for watchdog %s"),
s/watchdog/memory balloon/
> --- /dev/null
> +++ b/tests/qemuxml2argvdata/qemuxml2argv-balloon-device.args
> @@ -0,0 +1 @@
> +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -nodefconfig -nodefaults -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -usb -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x12
Email may truncate these long lines, but from what I can tell, they
should be okay.
> +++ b/tests/qemuxml2argvdata/qemuxml2argv-watchdog-device.xml
> @@ -19,5 +19,6 @@
> <target dev='hda' bus='ide'/>
> </disk>
> <watchdog model='ib700' action='poweroff'/>
> + <memballoon model='virtio'/>
> </devices>
> </domain>
I didn't see any tests of model='xen' instead of model='virtio'; do
there need to be any?
Technically sound, but quite a few nits. I'd really like to get in the
habit of touching up formatdomain.html.in before giving the ACK.
--
Eric Blake eblake at redhat.com +1-801-349-2682
Libvirt virtualization library http://libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20100720/e81d16a5/attachment-0001.sig>
More information about the libvir-list
mailing list