[Libvir] Re: support for hvm guests

Anthony Liguori aliguori at us.ibm.com
Thu May 11 01:28:49 UTC 2006


Jim Fehlig wrote:
> 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:

wrt the S-Expression format, that stuff is all changing in the very near 
future.  I've been sitting on patches to remove the S-Expression stuff 
completely for a few weeks now.  The thing that's kept me from 
submitting it is that I haven't gotten around to enabling the XML-RPC 
support in libvirt.

As soon as we get XML-RPC support working in libvirt, we can start 
making some aggressive changes to the Xend side of the API.

Regards,

Anthony Liguori

> [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.
>
> <os>
>  <type>hvm</type>
>  ...
>  <boot dev='hdd'>
> <os>
> <devices>
>  <disk type='block'>
>    <source dev='hdd'/>
>    <target dev='hdd'/>
>    <cdrom/>
>  </disk>
>  <graphics type='vnc'>
>  </graphics>
>  ...
> </devices>
>
> 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.
>
> (image
>  (hvm
>    ...
>    (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?
>
> Regards,
> Jim
>




More information about the libvir-list mailing list