[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [Libvir] Re: support for hvm guests

Anthony Liguori wrote:

Jim Fehlig wrote:

Tomorrow ended up being several days later :-). I looked at this again today and must say that this is a frustrating bug - feeling like some CS101 student.

So I was wrong in stating that xend does not respond to the create op issued by libvirt. I get the expected response from xend but the connection is not closed upon completing the request, thus I set in some read loop in libvirt waiting for eof. I stepped through the request processing code in xend for create op for both paravirtualized and hvm guests and all seems fine, i.e. request is processed, finished, socket closed, etc. in httpserver.py. Looking at a packet trace shows connection is terminated for paravirt case (which breaks out of the read loop in libvirt) but not so for hvm case.

The proper way to do the S-Expression RPC (or XML-RPC for that matter) is to look at the Content-Length header in the response and read back that much data (close()'ing the connection once you've gotten that amount). We shouldn't wait for EOF to occur to stop reading.

There was a patch recently that changed the read() behavior to read in larger amounts. It appears that when this was added, the behavior was changed to expect EOF. Sorry, I should have looked at that patch more carefully. If you revert xend_post to the older code, things should go back to working.

grr... Yes, this worked. So I'm able to launch hvm guests now but in the process of incorporating comments about the XML format for such guests I have come across another issue that could be handled in libvirt but perhaps a better place would be xend. The issue is structure of s-exp sent to xend. Currently xend appears to only accept things such as (vnc 1), (cdrom /dev/hdd) within the (image (hvm ...)) node. Well xend does accept something like "... (image (hvm ...(boot d))) (cdrom /dev/hdd) (vnc 1)...", but the resulting domain is not configured properly. With this config I get the following in xend.log:

[2006-05-10 17:11:48 xend] DEBUG (image:267) args: cdrom, val: None

This list has agreed that cdrom and graphics should be in the devices section of libvirt's XML format, e.g.

 <boot dev='hdd'>
 <disk type='block'>
   <source dev='hdd'/>
   <target dev='hdd'/>
 <graphics type='vnc'>

I can certainly add code in libvirt to handle converting this XML to the s-exp currently expected by xend but it makes for a larger patch. It almost seems better to have xend accept definition of cdrom and graphics outside of image node, e.g.

   (boot d)
(cdrom /dev/hdd)
(vnc 1)
(other graphics-related options)

Any thoughts before I go off and rework the XML -> s-exp code in libvirt?


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]