On Tue, Jul 22, 2008 at 05:23:00PM +0100, Daniel P. Berrange wrote:
On Tue, Jul 22, 2008 at 04:53:19PM +0100, Daniel P. Berrange wrote:
> On Tue, Jul 22, 2008 at 11:42:03AM -0400, Cole Robinson wrote:
> > Hi all,
> >
> > I've hit a couple bugs in the qemu driver with the recent
> > domain xml refactoring. I've debugged them but in both
> > cases I'm not sure what the optimal solutions are, so I'm
> > just laying them out here:
> >
> > 1) Previously defining a qemu guest without a 'listen'
> > address specified in the graphics tag would default to
> > 127.0.0.1 (hardcoded in qemu_driver->vncListen). Current
> > xml doesn't set this default, and will build a qemu
> > command line with an entry like '-vnc (null):1'. Not
> > sure if the default should be set at the parsing level
> > or the driver level.
>
> There was a good reason for removing the 127.0.0.1 from the XML parsing
> stage, but i can't remember what it is :-) Anyway this should really be
> handled at the point where we build the command line in the qemu driver
> code
Oh I remember now - both Xen and QEMU have a global default setting
for VNC listen (/etc/libvirt/qemu.conf and /etc/xen/xend-config.sxp).
So, if we default to '127.0.0.1' in the parser, we'll always override
the global hypervisor default setting. Hence we need to apply any
defaults in the individual drivers at time of guest creation (if it
is applicable).
Here's a suggested patch for this:
diff -r 59140de4e7a9 src/qemu_driver.c
--- a/src/qemu_driver.c Mon Jul 21 18:27:29 2008 +0100
+++ b/src/qemu_driver.c Tue Jul 22 22:12:22 2008 +0100
@@ -769,9 +769,14 @@
maxcpu = nodeinfo.cpus;
CPU_ZERO(&mask);
- for (i = 0 ; i < maxcpu ; i++)
- if (vm->def->cpumask[i])
+ if (vm->def->cpumask) {
+ for (i = 0 ; i < maxcpu ; i++)
+ if (vm->def->cpumask[i])
+ CPU_SET(i, &mask);
+ } else {
+ for (i = 0 ; i < maxcpu ; i++)
CPU_SET(i, &mask);
+ }
for (i = 0 ; i < vm->nvcpupids ; i++) {
if (sched_setaffinity(vm->vcpupids[i],
NB, I explicitly set the affinity if none is specified - this makes sure
the children don't inherit any bogus affinity from the libvirtd daemon
itself
Daniel.
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://ovirt.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|