[Libvir] problems using libvirt to mange "defined" domains.

Daniel P. Berrange berrange at redhat.com
Fri Oct 26 15:16:23 UTC 2007

On Wed, Sep 12, 2007 at 12:17:58PM -0700, Evan Bigall wrote:
> I'm having a problem using libvirt to manage "defined" domains (ie:
> domains for which it has XML, but are not running.)
> I have tried several debugging scenarios, but the simplest one is this. 
> In a libvirt C program I define the following XML:
> char domxml[]="<domain type='xen' id='99'>"
>   "<name>rhel5vm</name>"
>   "<uuid>f948d7f4f36c4bfae8053bca535183b3</uuid>"
>   "<os>"
>     "<type>linux</type>"
>     "<kernel>/var/lib/xen/boot/rhel5vm/vmlinuz-2.6.18-8.el5xen</kernel>"
> "<initrd>/var/lib/xen/boot/rhel5vm/initrd-2.6.18-8.el5xen.img</initrd>"
>     "<root>/dev/xvda1</root>"
>   "</os>"
>   "<memory>512000</memory>"
>   "<vcpu>1</vcpu>"
>   "<on_poweroff>destroy</on_poweroff>"
>   "<on_reboot>restart</on_reboot>"
>   "<on_crash>restart</on_crash>"
>   "<devices>"
>     "<interface type='bridge'>"
>       "<source bridge='xenbr0'/>"
>       "<mac address='00:16:3e:09:ef:b0'/>"
>       "<script path='vif-bridge'/>"
>     "</interface>"
>     "<disk type='block' device='disk'>"
>       "<driver name='phy'/>"
>       "<source dev='/dev/sda3'/>"
>       "<target dev='xvda'/>"
>     "</disk>"
>     "<console tty='/dev/pts/2'/>"
>   "</devices>"
> "</domain>";
> (I've played with several values for the domain id).

The 'id' field is not needed when defining a new VM - it is automatically
allocated by the Xen HV. Including it is harmless though - it'll simply
be ignored when defining a VM.

> What I find is that when I use virDomainDefineXML() to define the domain,
> for some reason it drops, the "root" element from the "os" specification. 
> Because of this the domain then crashes when I try to start it.

Yes, this looks like a bug in the way libvirt handles the <root> element.
In fact I didn't even realize we had a 'root' element! The XML parser will
accept the root tag, but the code which converst from XenD -> XML does not
include the root element.

As a workaround, it should work if you use the alternate cmdline tag, eg


|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 

More information about the libvir-list mailing list